Asp.net ToolkitScriptManager:一些脚本文件是如何定位的?

Asp.net ToolkitScriptManager:一些脚本文件是如何定位的?,asp.net,webforms,Asp.net,Webforms,我有一个使用标准Internet模板的ASP.NET4.5WebForm项目。包含在站点中。主站点是: <ajaxToolkit:ToolkitScriptManager runat="server"> <Scripts> <%--Framework Scripts--%> <asp:ScriptReference Name="jquery" /> <!-- ??? --> &

我有一个使用标准Internet模板的ASP.NET4.5WebForm项目。包含在站点中。主站点是:

<ajaxToolkit:ToolkitScriptManager runat="server">
    <Scripts>
        <%--Framework Scripts--%>
        <asp:ScriptReference Name="jquery" />   <!-- ??? -->
        <asp:ScriptReference Name="jquery.ui.combined" />  <!-- ?? -->
        <asp:ScriptReference Name="WebForms.js" Path="~/Scripts/WebForms/WebForms.js" />
        ...

它描述了如何在4.5 Web表单应用程序中注册jQuery脚本。代码示例准确地显示了jQuery脚本的选定版本是如何链接的。它说它是在应用程序启动之前运行的
PreApplicationStart
方法中执行的。我在整个项目中搜索了“PreApplicationStart”,但什么也没找到。有人知道它在哪里吗?

来自.Net framework 4.0 ScriptManager支持脚本映射功能。 因此,您可以使用脚本路径注册(关联)任何名称(即使是您自己的脚本)。主要的好处是,您可以指定用于调试、发布和配置的脚本。您还可以指定脚本的CDN位置。ScriptManager将在运行时为当前配置选择正确的配置

基本上,脚本映射在应用程序启动中注册,如下例所示:

void Application_Start(object sender, EventArgs e) {
    // map a simple name to a path
    ScriptManager.ScriptResourceMapping.AddDefinition("jQuery", new ScriptResourceDefinition {
        Path = "~/scripts/jquery-1.7.1.min.js",
        DebugPath = "~/scripts/jquery-1.7.1.js",
        CdnPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.7.1.min.js",
        CdnDebugPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.7.1.js"
    });
}
[EditorBrowsable(EditorBrowsableState.Never)]
public static class PreApplicationStartCode
{
  public static void Start()
  {
     string str = "2.0.3";
     ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition()
     {
       Path = "~/Scripts/jquery-" + str + ".min.js",
       DebugPath = "~/Scripts/jquery-" + str + ".js",
       CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + str + ".min.js",
       CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + str + ".js",
       CdnSupportsSecureConnection = true,
       LoadSuccessExpression = "window.jQuery"
     });
  }
}
编辑: 在ASP.NET 4中,添加了预应用程序启动方法的概念,程序集可以使用该方法在appdomain中早期执行代码,而无需任何配置。 所以,注册映射是由AspNet.ScriptManager.jQuery和AspNet.ScriptManager.jQueryUI库添加的,默认情况下,这些库是通过nuget添加到模板中的

基本上,该库由一个类组成,如以下示例所示:

void Application_Start(object sender, EventArgs e) {
    // map a simple name to a path
    ScriptManager.ScriptResourceMapping.AddDefinition("jQuery", new ScriptResourceDefinition {
        Path = "~/scripts/jquery-1.7.1.min.js",
        DebugPath = "~/scripts/jquery-1.7.1.js",
        CdnPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.7.1.min.js",
        CdnDebugPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.7.1.js"
    });
}
[EditorBrowsable(EditorBrowsableState.Never)]
public static class PreApplicationStartCode
{
  public static void Start()
  {
     string str = "2.0.3";
     ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition()
     {
       Path = "~/Scripts/jquery-" + str + ".min.js",
       DebugPath = "~/Scripts/jquery-" + str + ".js",
       CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + str + ".min.js",
       CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + str + ".js",
       CdnSupportsSecureConnection = true,
       LoadSuccessExpression = "window.jQuery"
     });
  }
}

来自.Net framework 4.0的ScriptManager支持脚本映射功能。 因此,您可以使用脚本路径注册(关联)任何名称(即使是您自己的脚本)。主要的好处是,您可以指定用于调试、发布和配置的脚本。您还可以指定脚本的CDN位置。ScriptManager将在运行时为当前配置选择正确的配置

基本上,脚本映射在应用程序启动中注册,如下例所示:

void Application_Start(object sender, EventArgs e) {
    // map a simple name to a path
    ScriptManager.ScriptResourceMapping.AddDefinition("jQuery", new ScriptResourceDefinition {
        Path = "~/scripts/jquery-1.7.1.min.js",
        DebugPath = "~/scripts/jquery-1.7.1.js",
        CdnPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.7.1.min.js",
        CdnDebugPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.7.1.js"
    });
}
[EditorBrowsable(EditorBrowsableState.Never)]
public static class PreApplicationStartCode
{
  public static void Start()
  {
     string str = "2.0.3";
     ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition()
     {
       Path = "~/Scripts/jquery-" + str + ".min.js",
       DebugPath = "~/Scripts/jquery-" + str + ".js",
       CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + str + ".min.js",
       CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + str + ".js",
       CdnSupportsSecureConnection = true,
       LoadSuccessExpression = "window.jQuery"
     });
  }
}
编辑: 在ASP.NET 4中,添加了预应用程序启动方法的概念,程序集可以使用该方法在appdomain中早期执行代码,而无需任何配置。 所以,注册映射是由AspNet.ScriptManager.jQuery和AspNet.ScriptManager.jQueryUI库添加的,默认情况下,这些库是通过nuget添加到模板中的

基本上,该库由一个类组成,如以下示例所示:

void Application_Start(object sender, EventArgs e) {
    // map a simple name to a path
    ScriptManager.ScriptResourceMapping.AddDefinition("jQuery", new ScriptResourceDefinition {
        Path = "~/scripts/jquery-1.7.1.min.js",
        DebugPath = "~/scripts/jquery-1.7.1.js",
        CdnPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.7.1.min.js",
        CdnDebugPath = "http://ajax.microsoft.com/ajax/jQuery/jquery-1.7.1.js"
    });
}
[EditorBrowsable(EditorBrowsableState.Never)]
public static class PreApplicationStartCode
{
  public static void Start()
  {
     string str = "2.0.3";
     ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition()
     {
       Path = "~/Scripts/jquery-" + str + ".min.js",
       DebugPath = "~/Scripts/jquery-" + str + ".js",
       CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + str + ".min.js",
       CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + str + ".js",
       CdnSupportsSecureConnection = true,
       LoadSuccessExpression = "window.jQuery"
     });
  }
}

谢谢我搜索了整个项目,但找不到与上面类似的东西。我在packages.config中找到了一些“映射”,不是针对Nuget的吗?Komilov:我找到了这篇文章(),它准确地解释了jQuery脚本是如何在ASP.NET 4.5 Webform应用程序中注册的(类似于上面的代码段)。它表示注册是在应用程序的PreApplicationStart方法中完成的,该方法甚至在应用程序启动之前执行。我在整个项目中搜索字符串“PreApplicationStart”,但找不到它。有人知道这在哪里吗?谢谢。您知道此文件位于哪个文件中吗?此文件不在文件中。此映射由项目引用的dll注册。此dll放置在packages\AspNet.ScriptManager.jQuery.1.7.1\lib\net45中。如果需要更新jQuery版本,请根据nuget包更新“AspNet.ScriptManager.jQuery”。我明白了。我想它在bin\AspNet.ScriptManager.jQuery.dll中。NuGet package manager会在安装新版本时更新此内容。谢谢。我搜索了整个项目,但找不到与上面类似的东西。我在packages.config中找到了一些“映射”,不是针对Nuget的吗?Komilov:我找到了这篇文章(),它准确地解释了jQuery脚本是如何在ASP.NET 4.5 Webform应用程序中注册的(类似于上面的代码段)。它表示注册是在应用程序的PreApplicationStart方法中完成的,该方法甚至在应用程序启动之前执行。我在整个项目中搜索字符串“PreApplicationStart”,但找不到它。有人知道这在哪里吗?谢谢。您知道此文件位于哪个文件中吗?此文件不在文件中。此映射由项目引用的dll注册。此dll放置在packages\AspNet.ScriptManager.jQuery.1.7.1\lib\net45中。如果需要更新jQuery版本,请根据nuget包更新“AspNet.ScriptManager.jQuery”。我明白了。我想它在bin\AspNet.ScriptManager.jQuery.dll中。每当安装新版本时,NuGet package manager都会更新此版本。