我正在寻找构建一个本质上抽象 ScriptManager 的控件。我需要它看起来/感觉尽可能接近常规 ScriptManager。这样做的原因是我们可以使用“#if not DEBUG”语句在 CompositeScript 中动态加载 .js 文件以进行发布,同时在我们的开发环境中保持轻松调试。
这是我到目前为止一直在玩的东西(控件标记只包含一个空的 ScriptManagerProxy):
Public Partial Class MyScriptManager
Inherits System.Web.UI.UserControl
Dim mlScripts As New List(Of ScriptReference)
Dim mlServices As New List(Of ServiceReference)
区域“属性”
Public Property Scripts() As List(Of ScriptReference)
Get
Return mlScripts
End Get
Set(ByVal value As List(Of ScriptReference))
mlScripts = value
End Set
End Property
Public Property Services() As List(Of ServiceReference)
Get
Return mlServices
End Get
Set(ByVal value As List(Of ServiceReference))
mlServices = value
End Set
End Property
结束区域
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
#If DEBUG Then
LoadNonComposite()
#Else
LoadComposite()
#End If
For Each scr As ServiceReference In mlServices
smScriptManagerProxy1.Services.Add(scr)
Next
End Sub
区域“辅助方法”
Private Sub LoadComposite()
For Each sr As ScriptReference In mlScripts
smScriptManagerProxy1.CompositeScript.Scripts.Add(sr)
Next
End Sub
Private Sub LoadNonComposite()
For Each sr As ScriptReference In mlScripts
smScriptManagerProxy1.Scripts.Add(sr)
Next
End Sub
结束区域
结束类
似乎 ScriptReferences 没有正确注册。在 DEBUG 中,我收到有关正在加载的多个脚本的错误,在 RELEASE 中,我收到“未定义系统”(未加载 Ajax 库)。我们使用 ScriptReferenceProfiler 来获取所有正在加载的 .js 并手动添加它(又名,“MicrosoftAjax.js”被手动添加到标记中的 ScriptManager)
任何帮助/方向表示赞赏!