2009-07-22 7 views
6

Si je mets un contrôle dans un fichier .aspx comme ceci; Je reçois un contrôle déclaré dans le fichier .aspx.designer.cs de la page;Modifier les modificateurs d'accès des contrôles ASP.NET

protected global::System.Web.UI.WebControls.TextBox protectedTextBox; 

Mais je voudrais changer le modificateur d'accès du contrôle à public. Y at-il un attribut ou similaire que je peux définir pour modifier le modificateur d'accès?

Voici pourquoi Je veux le faire. J'essaie d'avoir des postbacks inter-pages bien et bien. J'ai deux pages:

FirstPage.aspx 
    MyTextBox : textbox 
    MyButton : button, @PostbackUrl=Secondpage 

SecondPage.aspx 
    MyLabel : label 

Lorsque l'utilisateur clique FirstPage.MyButton, je veux écrire la valeur de FirstPage.MyTextBox.Text dans SecondPage.MyLabel.Text. Je pourrais le faire avec Page.FindControl, mais cela semble être un mauvais substitut à la conversion de la page précédente en objet FirstPage et à une référence directe au contrôle MyTextBox. Quelque chose comme ça;

// on the page_load of SecondPage.aspx; 
var previousPage = this.PreviousPage as FirstPage; 
this.MyLabel.Text = previousPage.MyTextBox.Text; 

Y a-t-il un moyen de changer le modificateur d'accès?

Répondre

6

Vous pouvez simplement supprimer la déclaration du concepteur et la placer dans votre code.

Les commentaires autour de la déclaration disent de le faire.

/// To modify move field declaration from designer file to code-behind file. 
+0

Ceci est uniquement valable pour le projet d'application Web. pour le site Web il n'y a pas de fichier de concepteur. Dans ce cas, la réponse de Steve_Cooper fonctionnera. public TextBox PublicTextBox {get {Renvoie this.MyTextBox; }} – Ozgur

2

Une option que j'ai considérée est l'écriture d'une propriété publique qui expose la page d'origine;

public TextBox PublicTextBox { get { return this.MyTextBox; } } 

Qui ferait le travail, mais semble hacky.

1

Steve, ce qui expose les contrôles de cette page aurait du sens si vous avez besoin de manipuler ces contrôles, mais dans votre cas, vous avez juste besoin de passer des données (cette chaîne) à l'autre gestionnaire, donc j'exposeriez cela et pas le contrôle lui-même.

Questions connexes