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

di , 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

Aggiungere controlli in maniera programmatica ad un controllo ContentPlaceHolder in una Master Page (#853) 1010 2
| Condividi su: Twitter, Facebook, LinkedIn, Google+

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