0

我正在寻找构建一个本质上抽象 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)

任何帮助/方向表示赞赏!

4

1 回答 1

0

对不起,伙计们,我想通了。不久前,我使用了复制和粘贴的 .js 引用,此后它们发生了变化。从而导致问题。

如果有人对在不牺牲开发便利性的情况下轻松提升性能感兴趣,上面的代码就可以工作。

于 2010-02-26T14:11:03.177 回答