2010-11-25 23 views
3

Cela doit être un problème courant.Le contrôle utilisateur ASP.NET héritant du contrôle utilisateur génère une référence nulle

  • contrôle de l'utilisateur A a un TextBox T.
  • B hérite de contrôle utilisateur de contrôle de l'utilisateur A.
  • contrôle utilisateur B est placé sur la page P.

Au cours de l'événement Page_Load de la page P, si vous tentez d'accéder à TextBox T, vous trouverez que c'est null.

Existe-t-il une solution élégante pour cela?

+1

pour citer la bannière publicitaire de la pile: "Avez-vous peur du codez?" (code s'il vous plaît) – RPM1984

Répondre

7

L'héritage de UserControls à partir de UserControls n'est pas une bonne stratégie. Les éléments dans le UserControl parent ne seront pas rendus - c'est pourquoi votre TextBox est null.

Une meilleure option serait d'avoir UserControl A contenu dans UserControl B - de cette façon les éléments de UserControl A peuvent être réutilisés dans vos autres UserControls.

Jetez un oeil à cet autre article sur l'héritage de UserControls - How (if at all) can you make an ASP.NET UserControl inherit from another UserControl?.

1

Est-ce que le contrôle de l'ASCX de B inclut la zone de texte T? Il doit pour que la zone de texte T ne soit pas nulle. Si controlB n'inclut pas textbox T, la propriété déclarée dans le code n'est liée à aucun contrôle frontal et reste donc nulle.