Ric*_*ard 8 .net c# asp.net master-pages
在我们的母版页中,我们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>
Run Code Online (Sandbox Code Playgroud)
我通过执行以下操作在页面上的嵌套控件中注册其他脚本
protected override void OnPreRender(EventArgs e)
{
ScriptManager.RegisterClientScriptInclude(this, this.GetType(), "jquery-ui", "~/js/jquery-ui.js");
base.OnPreRender(e);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法更改已加载已注册脚本的顺序?
- 要么 -
是否有可能至少确保在ScriptManager代码隐藏注册脚本之前注册在实际块中注册的脚本?
在深入挖掘ScriptManager源代码之后,我们可以做出两个有用的观察:
添加到管理器的脚本在页面上逐个注册,以便它们出现在集合中ScriptManager.Scripts(如果您很好奇 - 通过方法ClientScript.RegisterClientScriptBlock,而不是Render方法或smth那样).
标记中声明的脚本将ScriptManager.Scripts在ScriptManager创建对象时添加到集合中.
因此一种方式
确保在代码隐藏注册脚本之前注册在实际ScriptManager块中注册的脚本
是将控件中的脚本直接添加到ScriptManager.Scripts集合中,而不是使用ScriptManager类的静态实用方法.Control的代码示例如下:
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);
}
Run Code Online (Sandbox Code Playgroud)
一个小注 - 在代码示例中可以看到,我会建议ScriptManager在页面上没有时处理大小写.
| 归档时间: |
|
| 查看次数: |
2812 次 |
| 最近记录: |