2009-08-05 6 views
0

Ma page ASPX a:accès à une variable d'entrée cachée de la classe de base

<input type="hidden" id="txtHidden" runat="server" /> 

Cette page ASPX a un contrôle ascx (de inherits de BaseUserControl) qui appelle une méthode dans la classe de contrôle utilisateur de base

base.SetHidden("test"); 

la classe de contrôle utilisateur de base (hérite de System.Web.UI.UserControl) a la définition de SetHidden

public void SetHidden(string s) 
{ 
    //Here I need to get a reference to txtHidden and set it's value 

} 

Répondre

0

Essayez ceci:

<input type="hidden" id="txtHidden" runat="server" /> 

alors vous devriez être en mesure de le modifier côté serveur.

Modifier: Ahh, je vois.

Essayez ceci de votre commande:

Page.Form.FindControl("txtHidden") 
+0

Oui, j'ai l'attribut runat (article original édité). Je ne peux toujours pas accéder à txtHidden à partir de la classe de base – Nick

0

Vous devez jeter la référence de la page à la classe réelle de la page, vous pouvez accéder aux commandes en elle:

((TheActualPageClass)Page).txtHidden.Value = s; 
+0

Le seul problème avec le casting est qu'il nécessite que le contrôle sache sur quelle page il se trouve et qu'il soit casté sur cette page, créant ainsi une dépendance qui limite la réutilisation du contrôle. Mieux vaut utiliser Page.Form.FindControl – Randolpho

1

essayer :

public void SetHidden(string s) 
{ 
    HtmlInputHidden myHidden = (HtmlInputHidden)this.Page.FindControl("txtHidden"); 
    myHidden.Value = s; 
} 
Questions connexes