Principales respuestas
Ejecutar JavaScript desde ActionResult o PartialViewResult

Pregunta
-
Hola a todos!!
Tengo una cuestión, sobre cómo hacer que se ejecute código java script, generando la instrucción desde un ActionResult o un PartialViewResult.
Por ejemplo, en un ActionResult, después de realizar alguna búsqueda u operación en base de datos, necesito informarle al usuario el estatus de su solicitud (por ejemplo, si se produjo un error, o todo fue satisfactorio), y necesito hacerlo por medio de un alert, para el cual, cree la función ShowAlert() en un archivo .js.
Cómo puedo hacer, para que desde el ActionResult se genere la "llamada" a la función ShowAlert() ?
AUR
Respuestas
-
LA solución fué, convertir el ActionResult en JavaScriptResult, desde donde se retorna la llamada a la función 'ShowAlert()':
public JavaScriptResult(string message){ /*...*/ return JavaScript("ShowAlert("+message+");") }
AUR
- Marcado como respuesta Ale Uribe miércoles, 11 de febrero de 2015 16:07
Todas las respuestas
-
Hola, lo que te recomiendo yo es hacer una devolucion json
[HttpPost] public ActionResult Accion(int? id) { //Haces operacion return Json(new { success = true, message = "" }); }
y luego desde js llamas a ese action:
$.ajax({ url: '@Url.Action("Accion", "Controlador")', type: 'POST', data: { id: id }, success: function (result) { if (result.success) { //Significa que fue todo bien!
//Mandas alerta} else { //Significa que hubo error! } } });
Saludos
-
Buenas noches, usted también puede utilizar la variable dinámica ViewBag para capturar un error
public ActionResult Index() { try { ...... } catch { ViewBag.Message = "error message"; } return View(); }
Y en su vista
<script src="~/Scripts/jquery-1.8.2.js"></script> <script> $(function () { var error = document.getElementById("alerta").innerText; if (error != "" ){ alert(error); } }); </script> <div id="alerta" hidden> @ViewBag.Message </div>
G. Poliovei
-
hola
no queda claro, vas a enviar en una misma respuesta datos y javascript como respuesta en la view ?
porque si es asi en realidad no envias nada sino en la view habilitas en el modelo que debe mostrar el mensaje
algo como ser
public ActionResult Index() { //aqui la busqueda ViewBag.BusquedaSatisfactoria = true; return View(); }
y en la view
<script> @if(ViewBag.BusquedaSatisfactoria ){ alert("La busqueda fue un exito"); } </script> <!--aqui generas los datos de la view-->
como veras usas el flag directo para cambiar como se genera la view que devuelves renderizando o no el alert
igual lo que no queda claro si lo que devuelves es una view con html, o si es con json o quieres enviar solo javascript
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Editado Leandro TuttiniMVP martes, 28 de octubre de 2014 10:34
-
LA solución fué, convertir el ActionResult en JavaScriptResult, desde donde se retorna la llamada a la función 'ShowAlert()':
public JavaScriptResult(string message){ /*...*/ return JavaScript("ShowAlert("+message+");") }
AUR
- Marcado como respuesta Ale Uribe miércoles, 11 de febrero de 2015 16:07