Aggiungere controlli in maniera programmatica ad un controllo ContentPlaceHolder in una Master Page

di Marco Leoncini, in ASP.NET 2.0,

Con l'introduzione delle Master Page lo sviluppatore ASP.NET può creare porzioni di layout e codice facilmente condivisibili tra più pagine.

Contrariamente a quanto può far pensare il nome, la classe Master Page non eredità dal tipo Page ma bensì da UserControl e questo influisce sulla composizione dell'albero dei controlli: infatti è la pagina che ha come suo unico controllo figlio la Master Page, che conterrà i controlli presenti nella MastePage e nei vari controlli Content della pagina.

Questo particolare è da tenere in considerazione nel caso sia necessario inserire dinamicamente dei controlli nella pagina.
A differenza di quanto è possibile fare in modo dichiarativo, dove i controlli sono racchiusi tra i tag , questi devono essere aggiunti in maniera programmatica al ContentPlaceHolder della Master Page.

Per prima cosa bisogna recuperare il riferimento al ContentPlaceHolder:

ContentPlaceHolder myContent = Master.FindControl("MyContentPlaceHolder") as ContentPlaceHolder;

Controlliamo poi che il riferimento non sia nullo ed inseriamo il controllo a runtime:

if (myContent != null)
{
  Label newLabel = new Label();
  newLabel.Text = "Questa Label è aggiunta a runtime alla Master Page";
  myContent.Controls.Add(newLabel);
}

E' infine utile notare come il controllo Content non entri a far parte dell'albero dei controlli, ma si limiti a "passare" il suo contenuto al ContentPlaceHolder.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi