net mvc from asp javascript asp.net-mvc asp.net-mvc-3 partial-views renderpartial

from - render partial javascript mvc



Cómo incluir JavaScript desde una vista parcial en ASP.NET MVC3 (3)

Me gustaría poder proporcionar una forma para que las vistas parciales incluyan códigos / archivos JavaScript en la parte inferior de una vista. Esto permitiría que las vistas parciales incluyeran los archivos JavaScript de los que dependen. Por ejemplo, si quisiera escribir un parcial que necesite crear un cuadro de diálogo JQueryUI, me gustaría importar el archivo JavaScript JQueryUI, así como agregar código JavaScript que muestre el cuadro de diálogo.

Actualmente estoy escribiendo este código en la vista principal, lo que hace que no tenga sentido usar una vista parcial.

Entiendo que llamar a RenderPartial varias veces resultaría en la inclusión de scripts varias veces. Este es un problema solucionable una vez que sé cómo incluir realmente JavaScript en la vista principal desde la vista parcial.


Aquí es cómo puede tener una vista parcial con código JavaScript que utiliza cualquier biblioteca ( incluso cuando las bibliotecas se cargan al final de la página )

En su vista parcial agregue:

@{ TempData["Script"] += "MyFunction();"; } <script type="text/javascript"> function MyFunction() { // you can call your library here, e.g. jquery: $(function () { }); } </script>

En su página _Layout.cshtml agregue después de sus bibliotecas incluidas:

@*LOAD YOUR LIBRARIES HERE (E.G. JQUERY) *@ @if (TempData["Script"] != null) { <script type="text/javascript"> @Html.Raw(TempData["Script"].ToString()) </script> }

Puede tener varias vistas parciales adjuntando sus funciones a la misma clave TempData ["Script"]. Estarán encantados de coexistir si continúa agregando las funciones con el operador + = :

@{ TempData["Script"] += "AnotherFunction();"; }


Defina ContentPlaceHolder en su MasterPage (ASPX) o Sección en su página de diseño (Razor)

ASPX :

<body> <!-- End of Body --> <asp:ContentPlaceHolder ID="JavaScriptIncludes" runat="server" /> </body>

Maquinilla de afeitar

<body> <!-- End of Body --> @RenderSection("JavaScriptIncludes", required: false) </body>

Luego en el parcial:

ASPX :

<asp:Content ID="ExtraJs" ContentPlaceHolderID="JavaScriptIncludes" runat="server"> <script type="text/javascript" src="@Url.Content("/Scripts/SomeScript.js")" /> </asp:Content>

Maquinilla de afeitar

@section JavaScriptIncludes { <script type="text/javascript" src="@Url.Content("/Scripts/SomeScript.js")" /> }

También piense en usar un ayudante HTML para representar las etiquetas <script> .


Puede incluir etiquetas <script> dentro de la etiqueta <body> para que pueda tenerlas dentro de su vista parcial.