2010-02-25 6 views
0

Je cherche à construire un contrôle qui abstrait essentiellement un ScriptManager. J'en ai besoin pour ressembler/se sentir aussi proche d'un ScriptManager que possible. La raison en est que nous pouvons utiliser une instruction "#if not DEBUG" pour charger dynamiquement les fichiers .js dans CompositeScript à des fins de publication, mais aussi maintenir un débogage facile dans notre environnement de développement.Contrôle "personnalisé" ScriptManager?

Voici ce que je joue avec à ce jour (Le balisage de contrôle ne contient que un vide ScriptManagerProxy):

Public Partial Class MyScriptManager 
Inherits System.Web.UI.UserControl 

Dim mlScripts As New List(Of ScriptReference) 
Dim mlServices As New List(Of ServiceReference) 

Région "Propriétés"

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 

Fin Région

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 

Région "Méthodes auxiliaires"

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 

Fin Région

End Class

Il semble que les ScriptReferences ne reçoivent pas correctement enregistrés. Dans DEBUG, j'obtiens des erreurs sur plusieurs scripts en cours de chargement, et dans RELEASE, je reçois "sys non défini" (la bibliothèque Ajax n'est pas chargée). Nous utilisons ScriptReferenceProfiler pour charger tous les fichiers .js et les ajouter manuellement (alias, "MicrosoftAjax.js" est ajouté manuellement au scriptManager dans le balisage)

Toute aide/direction est appréciée!

Répondre

0

Désolé les gars, je l'ai compris. J'utilisais des références .js copiées et collées il y a quelques temps et elles avaient changé depuis. Cela provoque le problème.

Le code ci-dessus fonctionne, si quelqu'un est intéressé par une amélioration de la performance facile sans sacrifier la facilité de développement.