none
Mostrar una Ventana Modal desde el Controller con un viewBag RRS feed

  • Pregunta

  • hola a todos

    Basandome de este articulo en este foro mostrar-confirmacin-en-vista-enviada-desde-controller estoy tratando de hacer que desde el controller me envie una ventana Modal de boostrap.

    para esto estoy haciendo esto en mi controller y mi accion GenerarCertificado

    ViewBag.Modal = @"<div class='modal fade' id='myModal' role='dialog'>
                                        <div class='modal-dialog'>
    
                                            <!-- Modal content-->
                                            <div class='modal-content'>
                                                <div class='modal-header'>
                                                    <button type='button' class='close' data-dismiss='modal'>&times;</button>
                                                    <h4 class='modal-title'> Mensaje de Generador de Certificado </h4>
                                                </div>
                                                <div class='modal-body'>
                                                        <h2>No Existe Certificado con Estos Parametros</h2>
                                                </div>
                                                <div class='modal-footer'>
                                                    <button type='button' class='btn btn-default' data-dismiss='modal'>Cerrar</button>
                                                </div>
                                            </div>
    
                                        </div>
                                    </div> ";
                            

    y mi vista realizo estas lineas de codigo...

    <script type=“text/javascript”>
        $(document).ready(function(){
        var Ventana=ViewBag.Modal;
            if (ViewBag.Modal != ""){
                alert($("Html.Raw("+Ventana+)").val());
            });
        })
    </script>
    Es buena practica o hay una mejor forma de hacerlo? Realmente no me muestra ningun modal

    lunes, 12 de diciembre de 2016 21:42

Respuestas

  • Hola greg_dorian,

    No, es una mala práctica hacer eso. El código html de la ventana modal tiene que estar en la View y no enviarla desde un ViewBag.

    Tendrías que hacer algo como :

    public ActionResult MiAction()
    {
       /* Algún código ....*/
       ViewBag.exists= "No existe ningún certificado ...";
        
       return View();
    }

    Y en la Vista tienes que validar la existencia del ViewBag.

    @if (ViewBag.exists != null)
    {
        <div class='modal fade' id='myModal' role='dialog'>
            <div class='modal-dialog'>
    
                <!-- Modal content-->
                <div class='modal-content'>
                    <div class='modal-header'>
                        <button type='button' class='close' data-dismiss='modal'>&times;</button>
                        <h4 class='modal-title'> Mensaje de Generador de Certificado </h4>
                    </div>
                    <div class='modal-body'>
                        <h2>@ViewBag.exists</h2>
                    </div>
                    <div class='modal-footer'>
                        <button type='button' class='btn btn-default' data-dismiss='modal'>Cerrar</button>
                    </div>
                </div>
    
            </div>
        </div>
    }

    Con ese crearía el modal, y mediante Javascript tienes que mostrar la ventana modal.

    <script type="text/javascript">
        $('#myModal').modal('show');
    </script>

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta greg_dorian lunes, 16 de enero de 2017 17:09
    lunes, 12 de diciembre de 2016 23:01

Todas las respuestas

  • Hola greg_dorian,

    No, es una mala práctica hacer eso. El código html de la ventana modal tiene que estar en la View y no enviarla desde un ViewBag.

    Tendrías que hacer algo como :

    public ActionResult MiAction()
    {
       /* Algún código ....*/
       ViewBag.exists= "No existe ningún certificado ...";
        
       return View();
    }

    Y en la Vista tienes que validar la existencia del ViewBag.

    @if (ViewBag.exists != null)
    {
        <div class='modal fade' id='myModal' role='dialog'>
            <div class='modal-dialog'>
    
                <!-- Modal content-->
                <div class='modal-content'>
                    <div class='modal-header'>
                        <button type='button' class='close' data-dismiss='modal'>&times;</button>
                        <h4 class='modal-title'> Mensaje de Generador de Certificado </h4>
                    </div>
                    <div class='modal-body'>
                        <h2>@ViewBag.exists</h2>
                    </div>
                    <div class='modal-footer'>
                        <button type='button' class='btn btn-default' data-dismiss='modal'>Cerrar</button>
                    </div>
                </div>
    
            </div>
        </div>
    }

    Con ese crearía el modal, y mediante Javascript tienes que mostrar la ventana modal.

    <script type="text/javascript">
        $('#myModal').modal('show');
    </script>

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta greg_dorian lunes, 16 de enero de 2017 17:09
    lunes, 12 de diciembre de 2016 23:01
  • Hola greg_dorian,

    No, es una mala práctica hacer eso. El código html de la ventana modal tiene que estar en la View y no enviarla desde un ViewBag.

    Tendrías que hacer algo como :

    public ActionResult MiAction()
    {
       /* Algún código ....*/
       ViewBag.exists= "No existe ningún certificado ...";
        
       return View();
    }

    Y en la Vista tienes que validar la existencia del ViewBag.

    @if (ViewBag.exists != null)
    {
        <div class='modal fade' id='myModal' role='dialog'>
            <div class='modal-dialog'>
    
                <!-- Modal content-->
                <div class='modal-content'>
                    <div class='modal-header'>
                        <button type='button' class='close' data-dismiss='modal'>&times;</button>
                        <h4 class='modal-title'> Mensaje de Generador de Certificado </h4>
                    </div>
                    <div class='modal-body'>
                        <h2>@ViewBag.exists</h2>
                    </div>
                    <div class='modal-footer'>
                        <button type='button' class='btn btn-default' data-dismiss='modal'>Cerrar</button>
                    </div>
                </div>
    
            </div>
        </div>
    }

    Con ese crearía el modal, y mediante Javascript tienes que mostrar la ventana modal.

    <script type="text/javascript">
        $('#myModal').modal('show');
    </script>

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    HOLA joel teniendo en cuenta que la vista es donde voy a colocar el #myModal.show  MiAction tiene varios ViewBag que eventos dispararian el mostrar modal (#myModal.show )
    martes, 13 de diciembre de 2016 22:41