我有一个 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/