2010-10-07 2 views
1

Comment référencer un contrôle asp.net sur votre page dans une fonction ou une classe.Référence d'un contrôle ASP dans une fonction ou une méthode de classe

private void PageLoad(object sender, EventArgs e) 
{ 
    //An example control from my page is txtUserName 
    ChangeText(ref txtUserName, "Hello World"); 
} 

private void ChangeText(ref HtmlGenericControl control, string text) 
{ 
    control.InnerText = text; 
} 

Est-ce que cela changera réellement le texte du contrôle txtUserName?

J'ai essayé et travaille

private void PageLoad(object sender, EventArgs e) 
{ 
    ChangeText(txtUserName, "Hello World"); 
} 

private void ChangeText(TextBox control, string text) 
{ 
    control.Text = text; 
} 
+0

juste pensé après avoir écrit la question, ne l'ont pas encore essayé –

+0

Est-ce réellement votre événement 'Page_Load' dans le code ASPX derrière? Est-ce que la fonction que vous appelez dans le même code-behind aussi? Est-ce pour modifier le 'InnerText' de n'importe quel contrôle ou pour définir spécifiquement la propriété' Text' d'un contrôle ''? – Kev

+0

vous avez juste besoin de donner un attribut 'id' à votre contrôle et vous pouvez ensuite le référencer directement par son Id .. –

Répondre

2

Oui, il faut, en supposant qu'il est au moment approprié du cycle de vie de la page, de sorte que rien d'autre ne salit avec la suite. (Je ne connais pas les détails des cycles de vie ASP.NET

Cependant, il est à noter qu'il n'y a absolument aucune raison de le passer par référence ici, ce qui suggère que vous ne comprenez pas complètement le passage des paramètres dans .NET - Je vous suggère de lire my article on it -. Une fois que vous comprenez que (et la distinction de type référence/valeur) toutes sortes de choses peuvent devenir plus facile pour vous

Bien sûr, si vous avez déjà essayé le code dans la question et a trouvé cela n'a pas fonctionné, s'il vous plaît donner plus de détails.Selon le type de txtUserName, il pourrait même être que avecref il ne sera pas compiler, mais sansref ça va juste fonctionner.

+0

Je ne savais pas que les objets sont passés par référence par défaut –

+1

@geocine: Ils ne le sont pas. Les objets ne sont pas transmis * du tout *. Les références sont transmises par valeur cependant. S'il vous plaît lire l'article auquel je suis lié dans le texte. –

+0

@js Je suis en train de lire votre article, mais j'ai vérifié ma mise à jour et expliquez pourquoi cela fonctionne. –

0

À moins que je me manque quelque chose, tout ce que vous devez faire est la suivante:

private void PageLoad(object sender, EventArgs e) 
{ 
    txtUserName.Text = "Hello World"; 
} 
+0

Je le sais, je veux créer une méthode non seulement pour changer de texte plus tard mais dans une classe. Celui ci-dessus est juste un exemple direct –

Questions connexes