2010-05-24 3 views
0

J'ai une classe UserControlBase qui hérite de System.Web.UI.UserControl et mes contrôles utilisateur héritent de la classe UserControlBase. UserControlBase a certaines fonctions communes utilisées dans tous les contrôles utilisateur.comment accéder à un contrôle utilisateur de formulaire d'étiquette dans la classe Parent?

Je souhaite également mettre la fonction d'affichage des erreurs sur UserControlBase afin de ne pas avoir à le déclarer et à le gérer dans tous les contrôles utilisateur. L'erreur sera affichée dans une étiquette dans usercontrol. Le problème est comment accéder à l'étiquette qui est en usercontrol dans UserControlBase dans la fonction? Je ne veux pas passer l'étiquette comme argument.

Répondre

2

Dans votre UserControl base, exposer la valeur du texte de l'étiquette seulement:

public abstract class UserControlBase : System.Web.UI.UserControl 
{ 
    private Label ErrorLabel { get; set; } 
    protected string ErrorMessage 
    { 
     get { return ErrorLabel.Text; } 
     set { ErrorLabel.Text = value; } 
    } 
    protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 
     ErrorLabel = new Label(); 
     Controls.Add(ErrorLabel); 
    } 
    //... Other functions 
} 

Dans vos contrôles utilisateur héritant ceci:

public partial class WebUserControl1 : UserControlBase 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     try 
     { 

     } 
     catch (Exception) 
     { 
      ErrorMessage = "Error"; //Or whatever 

     } 

    } 

} 
Questions connexes