在ASP.NET站点中,我在Master页面上有一个ScriptManager控件,ScriptManagerProxy控件遍布整个地方。在大多数情况下,我使用<compositescript>
块将脚本组合到一个文件中。
Core.Master
<asp:scriptmanager id="ScriptManager1" runat="server" >
<compositescript>
<scripts>
<asp:scriptreference path="script1.js" />
<asp:scriptreference path="script2.js" />
... etc ...
</scripts>
</compositescript>
</asp:scriptmanager>
样本控件或内容页面
<asp:scriptmanagerproxy runat="server">
<compositescript>
<scripts>
<asp:scriptreference path="script3.js" />
<asp:scriptreference path="script4.js" />
... etc ...
</scripts>
</compositescript>
</asp:scriptmanagerproxy>
这很好用,但为了有效地使用Visual Studio的客户端调试工具,我不想在开发时整合脚本。
我尝试将所有脚本从<compositescripts>
移到<scripts>
,因此:
Private Sub ScriptManager1_PreRender(sender As Object, e As System.EventArgs) Handles ScriptManager1.PreRender
' In development, don't combine scripts
If IsDevelopmentEnvironment() Then
For Each s As ScriptReference In ScriptManager1.CompositeScript.Scripts.Reverse
ScriptManager1.Scripts.Insert(0, s)
Next
ScriptManager1.CompositeScript.Scripts.Clear()
End If
End Sub
这对于ScriptManager本身的脚本来说就像一个魅力。但是,它没有看到各种ScriptManagerProxy控件中的脚本,而且仍然会进行整合。在调试时,我可以看到我喜欢迭代的ScriptManager1.Proxies集合,但它是“朋友”所以我无法在代码中实际访问它。
在开发中禁用合并似乎是一个相当明显的要求,所以也许有一个更明显的方法来做到这一点,我只是缺少?