背景
在我们的母版页中,我们有一个ScriptManager
看起来像这样
<asp:ScriptManager ID="ScriptManager" runat="server" EnablePartialRendering="False" EnableScriptLocalization="true">
<Scripts>
<asp:ScriptReference Path="~/js/master.js" />
<asp:ScriptReference Path="~/js/jquery-min.js" />
</Scripts>
</asp:ScriptManager>
我通过执行以下操作在页面上的嵌套控件中注册其他脚本
protected override void OnPreRender(EventArgs e)
{
ScriptManager.RegisterClientScriptInclude(this, this.GetType(), "jquery-ui", "~/js/jquery-ui.js");
base.OnPreRender(e);
}
Expected
- master.js
- jquery-min.js
- jquery-ui.js *
Actual
- jquery-ui.js *
- master.js
- jquery-min.js
Question
有什么方法可以更改注册脚本的加载顺序吗?
- or -
是否至少可以确保在实际中注册的脚本ScriptManager
块是在代码隐藏注册脚本之前注册的吗?
深入研究后ScriptManager
源代码我们可以做出两个有用的观察:
因此有一种方法可以
确保在实际 ScriptManager 块中注册的脚本先于代码隐藏注册的脚本注册
是将控件中的脚本直接添加到ScriptManager.Scripts
集合而不是使用静态实用方法ScriptManager
班级。控件的代码示例如下:
protected override void OnPreRender(EventArgs e)
{
ScriptManager currentScriptManager = ScriptManager.GetCurrent(this.Page);
if (currentScriptManager != null)
{
ScriptReference scriptRef = new ScriptReference("~/js/jquery-ui.js");
currentScriptManager.Scripts.Add(scriptRef);
}
else
{
this.Page.ClientScript.RegisterClientScriptInclude(
this.GetType(), "jquery-ui", "js/jquery-ui.js");
}
base.OnPreRender(e);
}
一个小注释 - 正如代码示例中所示,我建议在没有时处理情况ScriptManager
在页面上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)