2010-12-10 18 views
4

J'ai un scénario délicat par lequel je veux ajouter ScriptManager ScriptReference uniquement sur certaines conditions comme suitAjout de scripts à ScriptManager à la condition

<asp:ScriptManagerProxy ID="scriptManagerProxy1" runat="server"> 
<CompositeScript> 
    <Scripts> 
     <asp:ScriptReference path=/...." /> 
    </Scripts> 
</CompositeScript> 
<asp:ScriptManagerProxy> 

Je veux faire cette référence de script à condition spécifique, donc j'agirent comme ci-dessous

<% if(xyzclass.property) 
{ %> 

above code 

<% } %> 

Une fois que je le fais, je reçois l'erreur comme

The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>). 

Je googlé et essayé d'ajouter « # » comme <% # mais en ajoutant « # » il ne peut pas trouver la classe (xyzclass) et ainsi obtenir l'erreur

Expected class, delegate, enum, interface, or struct 

J'ai essayé de faire le travail mentionné ici aussi http://leedumond.com/blog/the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks/

Pas de chance jusqu'à présent. Si je prends l'approche comme mentionné dans le lien ci-dessus, il dit quelque chose comme

The base class includes the field '', but its type (System.Web.UI.ScriptManagerProxy) is not compatible with the type of control (System.Web.UI.ScriptManager). 

Les gars, ce que je besoin est juste d'ajouter des scripts via ScriptManager SEULEMENT dynamiquement. Y a-t-il un moyen qui soit pratique dans la pratique?

Merci à l'avance,

Nimesh

Répondre

7

Si vous voulez ajouter des scripts en fonction des conditions, les ajouter: programmable

ScriptManager mgr = ScriptManager.GetCurrent(this.Page); 
if (condition) 
    mgr.Scripts.Add(new ScriptReference { Path = "~/script.js" }); 

dans le code derrière. Ou, utilisez un ScriptManagerProxy et définissez-les dans le contrôle utilisateur ou la page elle-même. C'est un excellent moyen d'ajouter des scripts, mais si vous utilisez un script composite, il les ajoute au même script composite que le ScriptManager.

HTH.

+0

Salut Mate, Déjà fait mais ne fonctionne pas aussi. Quand j'ai fait ScriptManger1.CompositeScript.Scripts.Add (item), ne fonctionne pas. Le script n'est pas chargé sur la page Web. Utilisé Firebug pour voir si les scripts sont présents dans ScriptReference. – DotNetInfo

+0

Ajout d'un contrôle ScriptManagerProxy particulier sur la page a travaillé pour moi. – DotNetInfo