2010-05-12 6 views
2

Juste avant (ou pendant) la page de rendu, je voudrais ajouter un morceau de code (script java). Cependant, lorsque je tente d'ajouter de nouvelles LiteralControl via la propriété Page.Controls je reçois une erreur:Ajout à l'élément BODY

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

Comment contournent cette question?

Répondre

3

Pour éviter ce problème procédez comme suit:

  1. Ajouter un contrôle <asp:Placeholder id="Placeholder1" runat="server" /> dans votre ASPX
  2. Dans code derrière ajouter le contrôle à la collection Controls de cet espace réservé:

    Placeholder1.Controls.Add (myControl);

0

Vous pouvez simplement ajouter le LiteralControl à votre balisage et définir sa propriété Text du code-behind.

EDIT:

Une autre (et probablement plus correcte) option est d'utiliser ScriptManager.RegisterClientScriptBlock

+0

Malheureusement, cela ne fonctionnera pas: J'ai une classe BasePage qui hérite de la classe Page. Et je veux le faire dans ma classe de base (je n'utilise pas de pages maîtresses). – dragonfly

+0

@dragonfly J'ai mis à jour ma réponse. –

+0

Ok merci. Cependant ... Que faire si je veux ajouter du code HTML, pas un script java? :)) – dragonfly

Questions connexes