none
Error al ejecutar codigo Jquery desde el controlador RRS feed

  • Pregunta

  • Tengo el siguiente problema,

    quiero mostrar un JQueryDialog desde el controlador en vez de un alert, luego de realizar el registro de una persona:

    string mensajeJS = @"<script>alert('Datos Registrados...');
                                                 window.location = '/Movies/Index';
                                         </script>";
    
                    return JavaScript(mensajeJS);

    Coloque de la anterior manera por ejemplo codigo javascript, pero en ie quiere descargar un archivo js, en otros navegadores imprime todo el script en la pagina, entonces use este codigo:

    string mensajeJS = @"<script>
                                                             alert('Datos Registrados...');
                                                 window.location = '/Movies/Index';
                                                     </script>";

                                return Content(mensajeJS);

    si funciona adecuadamente el script, ahora coloco una linea de JQuery para abrir el dialog

    string mensajeJS = @"<script>
                                                             $('#FrmAcceptUser').dialog('open');
                                                     </script>";
    
                                return Content(mensajeJS);

    pero nada en ie sale un error que menciona $ no se encuentra en la linea 2, en los otros navegadores muestra la pantalla en blanco, es posible realizar esta tarea con jquery.

    gracias por su tiempo.


    • Editado RealMaster viernes, 10 de abril de 2015 7:48
    viernes, 10 de abril de 2015 7:47

Respuestas

  • hola

    entiendo por lo que planteas que invocas un Action en el controller, no ? como lo estas realizando

    realizas un submit a ese action o lo invocas por medio de $.ajax

    si haces un submit lo mejor es poner en el action un flag como ser

    public XXController{
    
       public ActionResult xxAction(){
    
            return View();
    
       }
    
       [Httppost]
    
       public ActionResult xxAction(xxClassModel model){
    
            //aqui haces algo
    
            ViewBag.ShowAlert = true;
    
            return View(model);
       }
    
    
    }



    y en la view usas

    @model xxClassModel
    
    <script>
    
    @if(ViewBag.ShowAlert){
    
        $(function(){
              $('#FrmAcceptUser').dialog('open');
        });
    
    }
    
    </script>
    
    //resto de la view

    como veras desde el action pones info que la view usa para renderizar o no parte del javascript que muestra el alert

    es importante poner el codigo del opne del dialog en el ready de jquery por eso lo de $(function() { ....

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta RealMaster viernes, 10 de abril de 2015 23:50
    viernes, 10 de abril de 2015 10:45
  • La idea funciona pero retoque un poco el codigo:

    Controlador

    ViewBag.ShowDialog = "true";

    Vista

    @if (!string.IsNullOrEmpty(ViewBag.ShowDialog))
        {
            <script>
             $(document).ready($('#FrmAcceptUser').dialog('open'));
            </script>
        }
    }


    • Marcado como respuesta RealMaster viernes, 10 de abril de 2015 23:50
    • Editado RealMaster viernes, 10 de abril de 2015 23:51
    viernes, 10 de abril de 2015 23:50

Todas las respuestas

  • hola

    entiendo por lo que planteas que invocas un Action en el controller, no ? como lo estas realizando

    realizas un submit a ese action o lo invocas por medio de $.ajax

    si haces un submit lo mejor es poner en el action un flag como ser

    public XXController{
    
       public ActionResult xxAction(){
    
            return View();
    
       }
    
       [Httppost]
    
       public ActionResult xxAction(xxClassModel model){
    
            //aqui haces algo
    
            ViewBag.ShowAlert = true;
    
            return View(model);
       }
    
    
    }



    y en la view usas

    @model xxClassModel
    
    <script>
    
    @if(ViewBag.ShowAlert){
    
        $(function(){
              $('#FrmAcceptUser').dialog('open');
        });
    
    }
    
    </script>
    
    //resto de la view

    como veras desde el action pones info que la view usa para renderizar o no parte del javascript que muestra el alert

    es importante poner el codigo del opne del dialog en el ready de jquery por eso lo de $(function() { ....

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta RealMaster viernes, 10 de abril de 2015 23:50
    viernes, 10 de abril de 2015 10:45
  • La idea funciona pero retoque un poco el codigo:

    Controlador

    ViewBag.ShowDialog = "true";

    Vista

    @if (!string.IsNullOrEmpty(ViewBag.ShowDialog))
        {
            <script>
             $(document).ready($('#FrmAcceptUser').dialog('open'));
            </script>
        }
    }


    • Marcado como respuesta RealMaster viernes, 10 de abril de 2015 23:50
    • Editado RealMaster viernes, 10 de abril de 2015 23:51
    viernes, 10 de abril de 2015 23:50