2009-07-22 18 views
6

Si pongo un control en un archivo .aspx como este;Cambiar los modificadores de acceso de controles ASP.NET

<asp:TextBox ID="protectedTextBox" runat="server">Some info</asp:TextBox> 

Obtengo un control declarado en el archivo .aspx.designer.cs de la página;

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

Pero me gustaría cambiar el modificador de acceso del control a public. ¿Hay algún atributo o similar que pueda configurar para cambiar el modificador de acceso?

Aquí está por qué Quiero hacerlo. Estoy intentando que las devoluciones de páginas cruzadas funcionen de forma agradable y ordenada. Tengo dos páginas:

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

SecondPage.aspx 
    MyLabel : label 

Cuando el usuario hace clic FirstPage.MyButton, quiero escribir el valor de FirstPage.MyTextBox.Text en SecondPage.MyLabel.Text. Podría hacerlo con Page.FindControl, pero esto parece un sustituto pobre para convertir la página anterior como un objeto de FirstPage y referirme directamente al control MyTextBox en él. Algo como esto;

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

¿Hay alguna manera de cambiar el modificador de acceso?

Respuesta

6

Puede borrar la declaración del diseñador y ponerla en su código.

Los comentarios en torno a la declaración dicen que haga esto.

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

esto solo es válido para el proyecto de aplicación web. para el sitio web no hay archivo de diseñador. en este caso, la respuesta de @ Steve_Cooper funcionará. public TextBox PublicTextBox {get {return this.MyTextBox; }} – Ozgur

2

Una opción que he considerado es escribir una propiedad pública que expone la página original;

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

Que haría el trabajo, pero parece hacky.

1

Steve, exponiendo los controles de esa página tendría sentido si lo que se necesita para manipular los controles, pero en su caso sólo tiene que pasar algunos datos (que de cuerda) a otro controlador, por lo que expondría eso y no el control en sí mismo.

Cuestiones relacionadas