none
Helper que llama un script (jquery/javascript) RRS feed

  • Pregunta

  • Saludos a Todos

    Desarrollamos una aplicacion en ASP.NEt MVC4 con razor por razones de seguridad definimos una libreria (dll) un helper para ir cargando nuestros componentes GUI (javascript/jquery) dentro de este dll.

    en el código de la vista index.cshtml llamo de la siguiente manera al helper (Html.ToolBarControl("Persona")):

    @using CrdToolBar;
    @model MvcCrdToolBar.Models.Persona
    @{
        ViewBag.Title = "Index";
    }
    
    <h2>Registro de Persona</h2>
            
            
    @using (Html.ToolBarControl("Persona")) { }

    colocando de esta manera y viendo el codigo de la página, la función javascript que llamo esta al inicio de la página, antes de <html><head> necesito que esta función se cree o se  adicione despues del <body> alguna idea de como hacer esto?

    A la espera de sus sugerencias

    Saludos

    Ricardo

    martes, 27 de noviembre de 2012 15:58

Respuestas

  • Mmmm...

    Si no entiendo mal es el código del RenderBarra el que quieres colocar en la sección "Head" que te has definido, no? Exponlo en un helper (p.ej. ToolBarJs) y lo llamas desde la sección head:

    @section Head {
       @Html.Raw(Html.ToolBarJs().RenderBarra())
    }

    Luego desde el ToolBar("Persona") ya no renderizas el JS puesto que ya está renderizado :)

    ¿O hay algo que se me escapa?


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis

    • Marcado como respuesta ricardo_jal miércoles, 28 de noviembre de 2012 13:14
    miércoles, 28 de noviembre de 2012 11:23

Todas las respuestas

  • Voy a amplicar un poco mas el problema que tengo.

    averiguando un poco puedo definirme en el _Layout.cshtml

    <head>
        @RenderSection("Head", false);
    </head>

    y en el index.cshtml llamo a la sección

    @section Head {
        <script type="text/javascript">
            // JS aquí
        </script>
    }

    lo ideal seria colocar el codigo de java script ... el problema es que debo llamar al método ToolBarControl que esta dentro de una libreria dll el metodo RederBarra se carga y esta dentro del ToolBarControl y parte del método les adjunto (es bastante grande):

     private string RenderBarra() {
                StringBuilder JavaScript = new StringBuilder();
                JavaScript.AppendFormat(@"<script type= ""text/javascript"">{0}", Environment.NewLine);
                JavaScript.AppendFormat(@"var toolbar = new toolBarObject('toolbarObj');{0}", Environment.NewLine);
                JavaScript.AppendFormat(@"toolbar.disableElements('" + _formname + "', true);{0}", Environment.NewLine);
                JavaScript.AppendFormat(@"toolbar.setIconsPath('/content/imgs/');{0}", Environment.NewLine);
                JavaScript.AppendFormat(@"toolbar.addButton('nuevo', 1, 'Nuevo', 'btnnuevo.png', 'btnnuevo1.png');{0}", Environment.NewLine);
    ...
    ...
                JavaScript.AppendFormat(@"</script>{0}", Environment.NewLine);
                return JavaScript.ToString();
      }
    

    Como veran así debo cargar el codigo que esta en javascript.

    Nota: El codigo de javascript, el método RenderBarra trabaja correctamente y funciona como les comentaba se carga al inidicio de la página lo que necesito es que se cargue en el head o body o al final de la página.

    Saludos

    Ricardo

    martes, 27 de noviembre de 2012 20:09
  • Mmmm...

    Si no entiendo mal es el código del RenderBarra el que quieres colocar en la sección "Head" que te has definido, no? Exponlo en un helper (p.ej. ToolBarJs) y lo llamas desde la sección head:

    @section Head {
       @Html.Raw(Html.ToolBarJs().RenderBarra())
    }

    Luego desde el ToolBar("Persona") ya no renderizas el JS puesto que ya está renderizado :)

    ¿O hay algo que se me escapa?


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis

    • Marcado como respuesta ricardo_jal miércoles, 28 de noviembre de 2012 13:14
    miércoles, 28 de noviembre de 2012 11:23