2009-11-19 3 views
0

Dans le code derrière de ma page je veux attacher une étiquette à plusieurs endroits. Pour ce faire et éviter de créer des instances de la même mutliple étiquette que j'ai essayé:Plusieurs instances du contrôle serveur attachées par programmation n'apparaissent pas?

 Label lblNone = new Label(); 
     lblNone.Text = "<br/> None. <br/>"; 

     Master.mainContent.Controls.Add(lblNone); 
     Master.mainContent.Controls.Add(lblNone); 
     Master.mainContent.Controls.Add(lblNone); 

Pour une raison quelconque, je ne vois 1 exemple de la « Néant. » sur ma page?

Pourquoi est-ce?

Répondre

1

Vous n'avez pas d'option .. vous devez créer une instance de Label pour chaque contrôle que vous souhaitez afficher à l'écran.

Ceci est dû au comportement de la classe ControlCollection.

  1. il ne permettra pas plusieurs ajouts de la même "référence".
  2. Lorsque vous ajoutez un contrôle à une ControlCollection, il est automatiquement supprimé de la précédente, même si vous ajoutez votre libellé à différentes ControlCollections, cela ne fonctionnerait pas.

PS: En ControlCollection je veux dire le type de la propriété Master.mainContent.Controls

1

Vous pourriez trouver plus facile de créer une méthode pour cela comme si: -

protected void Page_Load(object sender, EventArgs e) 
{ 
    this.Controls.Add(CreateLiteral("text")); 
    this.Controls.Add(CreateLiteral("text")); 
    this.Controls.Add(CreateLiteral("text")); 
} 

private Literal CreateLiteral(string Content) 
{ 
    Literal L = new Literal(); 
    L.Text = Content; 
    return L; 
} 

Merci,

Phil.

Questions connexes