我正在寻找构建一个基本上抽象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中,我得到“sys not defined”(未加载Ajax库)。我们使用ScriptReferenceProfiler来加载所有.js并手动添加它(也就是说,“MicrosoftAjax.js”手动添加到标记中的ScriptManager中)
感谢任何帮助/指示!
答案 0 :(得分:0)
对不起伙计们,我想通了。我之前使用的是复制和粘贴的.js引用,之后它们发生了变化。从而造成了这个问题。
上述代码有效,如果有人对轻松提升性能感兴趣而不牺牲开发的便利性。