5

Utilicé Visual Studio 2012 y la plantilla incorporada (en Agregar -> Nuevo proyecto) para crear un nuevo proyecto de aplicación web ASP.NET Web Forms. Dentro de la página Site.Master proporcionada de forma predeterminada, veo un marcado de segmentación JQuery, que se incluye a continuación.Agrupar JQuery en ASP.NET Web Forms 4.5

¿Cómo averigua ASP.NET las rutas necesarias para incluir JQuery, teniendo en cuenta la siguiente marca?

<asp:ScriptManager runat="server"> 
    <Scripts> 
     <%--Framework Scripts--%> 
     <asp:ScriptReference Name="MsAjaxBundle" /> 
     <asp:ScriptReference Name="jquery" /> 
     <asp:ScriptReference Name="jquery.ui.combined" /> 
     <asp:ScriptReference Name="WebForms.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebForms.js" /> 
     <asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebUIValidation.js" /> 
     <asp:ScriptReference Name="MenuStandards.js" Assembly="System.Web" Path="~/Scripts/WebForms/MenuStandards.js" /> 
     <asp:ScriptReference Name="GridView.js" Assembly="System.Web" Path="~/Scripts/WebForms/GridView.js" /> 
     <asp:ScriptReference Name="DetailsView.js" Assembly="System.Web" Path="~/Scripts/WebForms/DetailsView.js" /> 
     <asp:ScriptReference Name="TreeView.js" Assembly="System.Web" Path="~/Scripts/WebForms/TreeView.js" /> 
     <asp:ScriptReference Name="WebParts.js" Assembly="System.Web" Path="~/Scripts/WebForms/WebParts.js" /> 
     <asp:ScriptReference Name="Focus.js" Assembly="System.Web" Path="~/Scripts/WebForms/Focus.js" /> 
     <asp:ScriptReference Name="WebFormsBundle" /> 
     <%--Site Scripts--%> 
    </Scripts> 
</asp:ScriptManager> 

no veo en cualquier parte de un archivo de configuración o código que resolvería jQuery para "~/scripts/jquery-1.7.1.js". Veo un archivo packages.config pero no describe explícitamente la ruta que debe ser calculada de alguna manera.

¿Alguien sabe cómo se resuelve la ruta al archivo javascript de JQuery en el tiempo de ejecución?

+0

¿no tienes una carpeta de "scripts" en tu solución en alguna parte? – Thousand

+0

Eche un vistazo a su otra pregunta aquí: http://stackoverflow.com/questions/12290537/vs2012-web-forms-bundling-confusion la respuesta parece ofrecer alguna aclaración, creo. La respuesta parece indicar que los paquetes colocan los archivos jQuery en la carpeta de scripts, que luego se agregan automáticamente en el tiempo de ejecución a partir de allí sin requerir ninguna otra referencia. – Nope

+0

Jane: sí, tengo una carpeta de scripts con todos los archivos javascript de JQuery ... pero mi pregunta es cómo se genera la ruta a este directorio. – ClearCloud8

Respuesta

2

Dentro de la Microsoft.ScriptManager.WebForms PreAppStartCode, se tiene:

 System.Web.UI.ScriptManager.ScriptResourceMapping.AddDefinition("WebFormsBundle", new ScriptResourceDefinition 
     { 
      Path = "~/bundles/WebFormsJs", 
      CdnPath = "http://ajax.aspnetcdn.com/ajax/4.5/6/WebFormsBundle.js", 
      LoadSuccessExpression="window.WebForm_PostBackOptions", 
      CdnSupportsSecureConnection = true 
     }); 

Esto es lo que se conecta a las declaraciones de la referencia de script:

<asp:ScriptReference Name="WebFormsBundle" />

Y también lo hace la deduplicación porque la ruta ScriptReference es la misma que la ruta para los archivos dentro de su paquete que debe registrarse dentro de BundleConfig.cs

+2

Para cualquiera que se pregunte dónde está esto, si refleja 'Microsoft.ScriptManager.WebForms.dll' está en el método' Start() '. – maxp

+0

Todavía no entiendo por qué tiene el paquete de webforms en BundleConfig.cs y en el ScriptManager. Usted dice que es para "deduplicación", pero ¿qué significa eso? Deduplicación de qué? ¿Por qué está definido dos veces? Esto parece ridículo. – Matt

Cuestiones relacionadas