在开发中禁用ScriptManager脚本合并?

时间:2011-11-17 21:49:31

标签: asp.net scriptmanager

在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集合,但它是“朋友”所以我无法在代码中实际访问它。

在开发中禁用合并似乎是一个相当明显的要求,所以也许有一个更明显的方法来做到这一点,我只是缺少?

1 个答案:

答案 0 :(得分:0)

ScriptMode="Debug"与发布有效吗?