2011-05-16 16 views
5

Tengo una vista parcial que se representa dentro de un cuadro de diálogo de JQuery. Puedo abrir y cerrar el diálogo fácilmente usando javascript, pero parece que no puedo cerrar el diálogo desde el controlador de la vista parcial.¿Cómo puedo activar un diálogo de JQuery para cerrarlo desde un controlador de vista parcial MVC?

pensé que sólo podía utilizar un JavascriptResult:

return new JavaScriptResult { Script = "$(\"#popupDiv\").dialog(\"close\");" }; 

Pero eso sólo muestra el código JavaScript en el navegador.

¿Cuál es la forma más fácil de señalar mi cuadro de diálogo de JQuery para cerrar desde dentro de una acción del controlador?

Respuesta

5

Menciona la vista parcial y el resultado de Javascript, por lo que supongo que esta vista parcial se invoca con AJAX. Si este es el caso se podría cerrar el diálogo en la devolución de llamada de éxito:

$.ajax({ 
    url: '/someaction', 
    success: function(result) { 
     $('#popupDiv').dialog('close'); 
    } 
}); 

Entonces usted puede tener su acción del controlador devolver un resultado JSON que indica el éxito o el fracaso de esta acción. A continuación, el interior de la devolución de llamada de éxito que podría poner a prueba este valor y cerrar el diálogo si todo ha ido bien y mostrar un mensaje de error si había algún problema:

return Json(new { success = true }); 

y luego:

success: function(result) { 
    if (result.success) { 
     $('#popupDiv').dialog('close'); 
    } else { 
     alert('Oops something went wrong, sorry'); 
    } 
} 
+0

Eso fue una gran solución . Gracias. –

+0

Consejo: Si su cuadro de diálogo llama a otros parciales, considere agregar $ ('# popupDiv'). Empty() para eliminar cualquier marcado en el cuadro de diálogo antes de llamar al cuadro de diálogo ('cerrar'). – gnome

Cuestiones relacionadas