2009-07-22 44 views
6

このような.aspxファイルにコントロールを配置すると、ASP.NETコントロールのアクセス修飾子を変更する

ページの.aspx.designer.csファイルでコントロールが宣言されています。

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

ただし、コントロールのアクセス修飾子をpublicに変更したいとします。アクセス修飾子を変更するために設定できる属性などはありますか?

ここにはなぜしたいですか?私はクロスページポストバックがきれいにうまく動作するようにしようとしています。ユーザーがFirstPage.MyButtonをクリックすると、私はSecondPage.MyLabel.TextFirstPage.MyTextBox.Textの値を書きたい、

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

SecondPage.aspx 
    MyLabel : label 

:私は2つのページがあります。私はPage.FindControlでそれを行うことができますが、これはFirstPageオブジェクトとして前のページをキャストし、その上のMyTextBoxコントロールを直接参照するという貧弱な代替のようです。このようなもの;

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

アクセス制限を変更する方法はありますか?

答えて

6

デザイナーから宣言を削除し、それをコードの中に入れることができます。

宣言の周りのコメントはこう言っています。

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

これはWebアプリケーションプロジェクトでのみ有効です。ウェブサイトにはデザイナーファイルはありません。この場合、@ Steve_Cooperの答えはうまくいくでしょう。パブリックTextBox PublicTextBox {get {return this.MyTextBox; }} – Ozgur

2

私が考えてきたオプションは、元のページを公開するパブリックプロパティを作成することです。

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

これはどちらかと言えば仕事は終わってしまいますが、ハッキーなようです。

1

スティーブ、あなたはこれらのコントロールを操作する必要があると思いますが、あなたのケースで、あなただけの他のハンドラにいくつかのデータ(つまり文字列)を渡す必要があるので、私は公開するかどう理にかなって、そのページのコントロールを暴露コントロール自体ではなく、

関連する問題