“自定义”ScriptManager控件?

时间:2010-02-25 16:36:17

标签: .net javascript scriptmanager

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

感谢任何帮助/指示!

1 个答案:

答案 0 :(得分:0)

对不起伙计们,我想通了。我之前使用的是复制和粘贴的.js引用,之后它们发生了变化。从而造成了这个问题。

上述代码有效,如果有人对轻松提升性能感兴趣而不牺牲开发的便利性。