在asp.net页面中包含脚本的正确方法

在asp.net页面中包含脚本的正确方法,asp.net,javascript,scriptmanager,Asp.net,Javascript,Scriptmanager,我有一个ASP.NET应用程序,它混合使用了ASP.NET AJAX(包括UpdatePanel)和jQuery,这是由几个不同背景的开发人员编写的 有些脚本包含在ScriptManager本身中并非总是可以在标记中包含所有脚本。 如果脚本依赖于动态数据,则需要从代码隐藏中“注入”脚本 我的规则是尽可能避免从代码隐藏中“注入”脚本,并将其作为最后手段 编辑: 如果您有许多不同的脚本文件,则首选使用scriptmanager。 使用scriptmanager时,所有脚本都将“连接”到单个文件中。这

我有一个ASP.NET应用程序,它混合使用了ASP.NET AJAX(包括UpdatePanel)和jQuery,这是由几个不同背景的开发人员编写的


有些脚本包含在ScriptManager本身中
并非总是可以在标记中包含所有脚本。
如果脚本依赖于动态数据,则需要从代码隐藏中“注入”脚本

我的规则是尽可能避免从代码隐藏中“注入”脚本,并将其作为最后手段

编辑:
如果您有许多不同的脚本文件,则首选使用scriptmanager。

使用scriptmanager时,所有脚本都将“连接”到单个文件中。这会影响浏览器下载脚本的方式。浏览器通常有2个并发连接的限制,如果你有10个脚本,那么你需要分5步下载它们。Scriptmanager将确保这一切在一个步骤中完成。

我建议使用Ajax脚本加载程序(如果您在asp.net、asp.net Ajax库、jquery环境中工作)

一个
是调用
脚本管理器的声明等价物。RegisterScriptBlock()
,与任何其他asp.net控件声明类似,它类似于执行一个编程的
控件。添加()

话虽如此,实际上并没有“首选方式”。如果要构建可分发的web控件,则需要从控件的设置例程中调用各种
.RegisterScript…()
方法,而不是依赖用户添加标记

如果您只想在网站中包含脚本,那么使用标记方法可能更方便

如果您在Ajax调用期间添加脚本,那么您需要使用
ScriptManager
来完成此操作。如果要在常规回发中添加脚本,则需要使用
ClientScriptManager
来完成


所以。。。很难列举利弊。在您的例子中,如果您没有构建可再发行的代码,那么最明显和最直接的方法就是通过标记包含脚本引用,因为它往往更为可见。但我不确定您是否能够将每个实例合并到一个方法中,因为所有方法的存在都是有原因的,并且您可能需要使用多个方法。

没有任何东西取决于动态数据,因此我更愿意将它们移到标记中。我的直觉是,把它们放在ScriptManager中会“更好”,但我没有什么可以支持。答案很好。这让我更好地了解何时使用每种方法,就我而言,这只是在网站中包含脚本。我不认为我们的脚本包含GET和POST之间的差异。
protected override void Render(HtmlTextWriter writer)
 {
    Page.ClientScript.RegisterClientScriptInclude("jQuery", ResolveClientUrl("~/scripts/jquery/js/jquery-1.4.2.min.js"));    
    base.Render(writer);
}
<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Scripts>
        <asp:ScriptReference Path="~/scripts/jquery/js/jquery-1.4.2.min.js" />
    </Scripts>
</asp:ScriptManager>
<script src="Scripts/jQuery/js/jquery-1.4.2.min.js" type="text/javascript"></script>