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

标签 asp.net javascript scriptmanager

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

有些脚本包含在 ScriptManager 本身中 <asp:ScriptManager><Scripts><asp:ScriptReference.... ,而其他人则使用 Page.ClientScript.RegisterClientScriptInclude在后面的代码中,其他人直接使用<script src="">包括脚本。

如果可能的话,我想合并为一种处理此问题的方法,但我不确定每种方法的优缺点是什么以及首选哪种方法。


一个例子是:

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>

最佳答案

<asp:scriptreference>是声明等同于调用 ScriptManager.RegisterScriptBlock() ,就像任何其他 asp.net 控件声明一样,类似于执行程序化 Controls.Add() .

话虽如此,确实没有“首选方式”。如果您正在构建可分发的 Web 控件,那么您将需要调用各种 .RegisterScript...()来自控件设置例程的方法,而不是依赖于必须添加标记的用户。

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

如果您在 Ajax 调用期间添加脚本,那么您会希望使用 ScriptManager去做吧。如果您要在常规回发中添加脚本,那么您可能希望使用 ClientScriptManager去做。

所以...很难列举优缺点。在您的情况下,如果您不构建可再分发代码,那么最明显和最直接的方法是通过标记包含脚本引用,因为它往往更明显。但我不确定您是否能够将每个 事件合并为一种方法,因为所有方法的存在都是有原因的,而且您可能需要使用多个方法。

关于asp.net - 在 asp.net 页面中包含脚本的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3198123/

相关文章:

asp.net - BaseController 在 MVC 中的用途是什么?

c# - WebResource.axd 和 ScriptResource.axd 加载非常慢

c# - 来自 C# 的警报消息

c# - 带有 ExecuteReaderAsync CommandBehavior.SequentialAccess 的 ASP.NET webapi HttpResponseMessage

c# - ASP.Net 标识 : Difference between UseOAuthBearerTokens and UseCookieAuthentication?

asp.net - Mono/ASP/lighttpd/Linux : relative path not working

javascript - 为什么 ngMessages 警报只出现一次?

javascript - 更改拖动对象并在放置后恢复它

javascript - 如何在多个项目中组织 TypeScript 接口(interface)

javascript - 更新面板部分回发后,更新面板之外的所有内容都会消失