2011-08-15 3 views
4

J'ai un contrôle utilisateur .ascx qui se trouve dans ma page search.aspx. Comment récupérer un contrôle du contrôle utilisateur .ascx dans le code search.aspx.cs derrière?Récupérer un contrôle d'une page ascx dans ASP.Net

keywordSearch.Value = "value"; 
// the code behind can't see the keywordSearch control 

Répondre

3

contrôles internes Normalement, ne sont pas exposés de contrôles utilisateur basés sur des modèles, parce qu'ils sont déclarés comme protected. Vous pouvez toutefois exposer le contrôle dans une propriété publique, comme celui-ci:

public TextBox CustomerName { 
    get { return txt_CustomerName; } 
} 

Edit: Si vous devez définir la valeur du contrôle alors vous êtes mieux avec une propriété qui expose la valeur, non le contrôle:

public string CustomerName { 
    get { return txt_CustomerName.Text; } 
    set { txt_CustomerName.Text = value; } 
} 
+0

comment voulez-vous écrire un setter aussi? – cdub

+0

Si vous avez également besoin de _set_ la valeur, vous devez exposer une propriété en tant que chaîne ou autre type en fonction du contrôle en question, puis obtenir/définir la valeur dans l'accesseur. Vous voulez exposer un getter pour la valeur d'un contrôle mais pas un setter pour le contrôle lui-même. – kprobst

+0

merci je l'ai enfin travailler maintenant – cdub

3

Vous pourriez être en mesure de fournir une propriété publique (ou interne) dans le code de votre contrôle utilisateur derrière qui permet « d'obtenir » le contrôle dans le contrôle de l'utilisateur. Vous pouvez ensuite accéder à cette propriété à partir du code de votre page.

1

Essayez la méthode de FindControl pour accéder à un contrôle à la page de conteneurs:

((TextBox)Page.FindControl("keywordSearch")).Value = "value"; 
Questions connexes