На сайте ASP.NET у меня есть элемент управления 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, которую я бы хотел перебрать, но это «Друг», поэтому я не могу получить к ней доступ в коде.
Отключение консолидации в разработке кажется довольно очевидным требованием, так что, может быть, есть гораздо более очевидный способ сделать это, которого мне просто не хватает?