¿Cómo puedo activar un cuadro de diálogo de JQuery para que se cierre desde el controlador de una vista parcial de MVC?

Tengo una vista parcial que se representa dentro de un diálogo de JQuery. Puedo abrir y cerrar fácilmente el cuadro de diálogo usando javascript, pero parece que no puedo cerrar el cuadro de diálogo desde el controlador de la vista parcial.

Pensé que podría usar un JavascriptResult:

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

Pero eso solo muestra el javascript en el navegador.

¿Cuál es la mejor forma de indicar a mi diálogo de JQuery que se cierre desde dentro de una acción del controlador?

preguntado el 16 de mayo de 11 a las 18:05

1 Respuestas

Mencionas la vista parcial y el resultado de javascript, así que supongo que esta vista parcial se invoca usando AJAX. Si este es el caso, puede cerrar el cuadro de diálogo en la devolución de llamada exitosa:

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

Luego, puede hacer que la acción de su controlador devuelva un resultado Json que indique el éxito o el fracaso de esta acción. Luego, dentro de la devolución de llamada exitosa, puede probar este valor y cerrar el cuadro de diálogo si todo salió bien y mostrar un mensaje de error si hubo algún problema:

return Json(new { success = true });

y entonces:

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

contestado el 16 de mayo de 11 a las 22:05

Esa fue una gran solución. Gracias. - Mike Pateras

Sugerencia: Si su diálogo llama a otros parciales, considere agregar $ ('# popupDiv'). Empty () para eliminar cualquier marca en el diálogo antes de llamar al diálogo ('cerrar'). - gnomo

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.