Chi ha usato le
MasterPage sa bene che tutte le pagine che ne utilizzano una ereditano i valori dei meta tags dalla
MasterPage.
Se ad esempio, nella MasterPage MP.master abbiamo :
<meta name="description" content="esempio da masterpage" />
allora anche in tutte le pagine che utilizzano MP.master avremo il tag description con lo stesso content.
Anche se proviamo a modificare a mano l'html della pagina che usa MP.master scrivendo :
<meta name="description" content="esempio da miaPagina" />
il risultato sarà di avere nel codice html finale di risposta da parte del server, sempre e comunque :
<meta name="description" content="esempio da masterpage" />
Come ovviare a questo problema??
Quando mi sono trovato a dover affrontare questo problema, ho fatto una breve ricerca su google e mi sono usciti risultati con codici lunghissimi e complicati...fate una prova!!
Allora ho deciso di provarci da solo..come sempre..chi fa da sè fa per tre!
Ecco il codice che dovete inserire nell'evento
Page_Load :
//recuperiamo un riferimento all'oggetto htmlhead della masterpage
HtmlHead head = (HtmlHead)Page.Master.Page.Header;
//cicliamo tutti gli oggetti contenuti in head, cercando quello con nome description e quindi ne modifichiamo il valore
foreach (HtmlMeta de in head.Controls)
{
if (de.Name.Equals("description"))
{
de.Content = "esempio da miaPagina";
break;
}
}
Poche righe di codice ed il gioco è fatto!
Enjoy it!