2009-07-22 7 views
6

Wenn ich ein Steuerelement in eine ASPX-Datei wie folgt einfügen;Ändern Sie die Zugriffsmodifikatoren von ASP.NET-Steuerelementen

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

Ich bekomme ein deklariertes Steuerelement in der Datei .aspx.designer.cs;

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

Aber ich möchte den Zugriffsmodifizierer der Steuerung public ändern. Gibt es ein Attribut oder ähnliches, das ich einstellen kann, um den Zugriffsmodifizierer zu ändern?

Hier ist warum Ich möchte es tun. Ich versuche, Cross-Page-Postbacks schön und ordentlich arbeiten zu lassen. Ich habe zwei Seiten:

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

SecondPage.aspx 
    MyLabel : label 

Wenn der Benutzer FirstPage.MyButton klickt, ich möchte den Wert von FirstPage.MyTextBox.Text in SecondPage.MyLabel.Text schreiben. Ich könnte es mit Page.FindControl tun, aber das scheint ein schlechter Ersatz zu sein, um die vorherige Seite als FirstPage-Objekt zu übertragen und direkt auf das MyTextBox-Steuerelement zu verweisen. Etwas wie das;

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

Gibt es eine Möglichkeit, den Zugriffsmodifizierer zu ändern?

Antwort

6

Sie können die Deklaration einfach vom Designer löschen und in Ihrem Code hinterlegen.

Die Kommentare um die Erklärung sagen, dies zu tun.

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

Dies gilt nur für Web Application Project. Für die Website gibt es keine Designer-Datei. In diesem Fall wird @ Steve_Cooper's Antwort funktionieren. öffentliche TextBox PublicTextBox {get {return this.MyTextBox; }} – Ozgur

2

Eine Option, die ich in Betracht gezogen habe, ist das Schreiben einer öffentlichen Eigenschaft, die die Originalseite verfügbar macht;

Was würde die Arbeit erledigen, aber scheint hacky.

1

Steve, die Seite der Kontrollen auszusetzen würde Sinn machen, wenn Sie diese Kontrollen zu manipulieren brauchen würden, aber in Ihrem Fall, dass Sie nur ein paar Daten zu übergeben (die Zeichenkette) an den anderen Handler, ich würde so aussetzen das und nicht die Kontrolle selbst.

Verwandte Themen