2011-01-26 72 views
12

Necesito crear ventanas emergentes en mvc (no una nueva pestaña en el navegador). ¿Alguien sabe como hacer esto?MVC-ventanas emergentes

+0

He actualizado mi respuesta de acuerdo a sus requisitos más recientes (dirección URL abierta en el diálogo). Espero que te ayude :) –

Respuesta

34

Una posibilidad es usar jquery ui dialog.

EDITAR

La idea sería tener una acción ajax que devuelve una vista parcial. El resultado de esa acción (html) se coloca dentro del contenedor de la ventana emergente y en el controlador de éxito de la llamada ajax se abre la ventana emergente. Aquí hay un código de ejemplo:

@Ajax.ActionLink("Open popup", "SomeAction", new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "result", InsertionMode = InsertionMode.Replace, OnSuccess="openPopup" })<br /> 

<div id="result" style="display:none;"></div> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#result").dialog({ 
     autoOpen: false, 
     title: 'Title', 
     width: 500, 
     height: 'auto', 
     modal: true 
    }); 
}); 
function openPopup() { 
    $("#result").dialog("open"); 
} 
</script> 

Después hay que añadir la acción en el controlador que devuelve la vista parcial

[HttpGet] 
public PartialViewResult SomeAction() 
{ 
     return PartialView(); 
} 

lugar lo que necesita en la vista parcial, también puede incluir parámetros en la acción, etc.

¡Buena suerte!

+0

Necesito pasar la dirección URL que se abrirá en el menú emergente modal, y no estoy seguro de cómo hacer eso con jquery ... ¿Alguna idea? – Cipiripi

+0

He editado mi respuesta, por favor verifíquela. – uvita

+0

Abre solo algunos div como contenido de diálogo, ¿no es así? ¿Pero cómo abrir alguna otra página en el cuadro de diálogo? –

3

La forma más obvia es usar uno de los frameworks js. Personalmente prefiero el control de diálogo jQuery UI.
Por favor, consulte http://jqueryui.com/demos/dialog/ para obtener información detallada al respecto.
También puede consultar ASP.NET MVC modal dialog/popup best practice (que es la pregunta similar a la suya)

Por supuesto, si se necesita algún emergente sencilla que siempre puede utilizar alert('Im popup');

actualización de acuerdo a su última solicitud
abrir algunas URL en la nueva ventana que puede utilizar siguiente javascript:

function OpenDialog() { 
window.open("some url", "DialogName", "height=200,width=200,modal=yes,alwaysRaised=yes"); 
} 

Pero el resultado realmente depende del navegador. La mayoría de ellos abren esta ventana modal no en una pestaña nueva sino en una nueva instancia del navegador.
Este tema podría ayudarle a aswell:
JavaScript open in a new window, not tab

Cuestiones relacionadas