2010-04-30 7 views
0

J'ai ce codeC# & Ajout dynamique balises META

protected void Page_Load(object sender, EventArgs e) 
{ 
    DataSet.DestinationsDataTable GetDestinations = (DataSet.DestinationsDataTable)dta.GetData(); 
    Page.Title = GetDestinations.Rows[0]["Meta_Title"].ToString(); 

    HtmlMeta hm = new HtmlMeta(); 
    HtmlHead head = (HtmlHead)Page.Header; 
    hm.Name = GetDestinations.Rows[0]["Meta_Desc"].ToString(); 
    hm.Content = GetDestinations.Rows[0]["Meta_Key"].ToString(); 
    head.Controls.Add(hm); 
} 

Et il est de retour cette erreur (sur une page de contenu)

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

pensées?

Répondre

1

Je ne vois pas ce qui ne ressort pas du message d'erreur. Votre balise <head> contient un bloc <% %> et, par conséquent, vous ne pouvez pas ajouter dynamiquement des contrôles lors de l'exécution.

Pour résoudre ce problème, ajoutez un espace réservé et mettre vos balises META là:

<html> 
    <head> 
     ... 
     <asp:PlaceHolder runat="server" ID="metaTags" /> 
    </head> 
... 

Et puis:

protected void Page_Load(object sender, EventArgs e) 
{ 
    DataSet.DestinationsDataTable GetDestinations = (DataSet.DestinationsDataTable)dta.GetData(); 
    Page.Title = GetDestinations.Rows[0]["Meta_Title"].ToString(); 

    HtmlMeta hm = new HtmlMeta(); 
    hm.Name = GetDestinations.Rows[0]["Meta_Desc"].ToString(); 
    hm.Content = GetDestinations.Rows[0]["Meta_Key"].ToString(); 
    this.metaTags.Controls.Add(hm); 
} 
+0

ahh, merci, je connaissais la question que je ne savais pas comment résoudre il. Merci encore! – balexander

Questions connexes