プロパティを持つ .aspx ページがあります。ここで、ユーザー コントロールを作成し、ページにドロップします。ユーザーコントロールの背後にあるコードでそのプロパティにアクセスするにはどうすればよいですか。
質問する
4732 次
2 に答える
3
最善の方法は、UserControl でパブリック プロパティを公開し、そのプロパティを ASPX ページから割り当てることです。
コードで:
var uc = this.myUserControl as MyCuserControlType;
uc.CustomUserControlProperty = this.MyPageProperty;
宣言的に
<uc:MyUserControlType1 runat="server= ID="myUserControl" CustomUserControlProperty="<%# this.MyPageProperty %>" />
this.DataBind();
注: 宣言型マークアップを使用する場合は、バインディングを強制するコードを呼び出す必要があります。
編集 1
反対のこと (イベントに応答してコントロールからページに値を渡す) を行う場合は、ユーザー コントロールで独自のカスタム イベントを宣言し、必要に応じて起動することができます。
例:
ユーザー制御コードビハインド*
public event Action<string> MyCustomEvent = delegate{};
....
// somewhere in your code
this.MyCustomEvent("some vlaue to pass to the page");
ページのマークアップ
<uc:MyUserControl1 runat="server" onMyCustomEvent="handleCustomEvent" />
ページ コード ビハインド
public void handleCustomEvent(string value)
{
// here on the page handle the value passed from the user control
this.myLabel.Text = value;
// which prints: "some vlaue to pass to the page"
}
于 2012-09-25T05:04:40.800 に答える
2
ユーザー コントロールが親ページの何かにアクセスする必要がある場合、このユーザー コントロールには、親から設定できる独自のプロパティとしてそれが含まれているはずです。理想的には、ユーザー コントロールは、ページ上の親コンテキストまたは他のユーザー コントロールから独立している必要があります。それらは、公開しているプロパティ全体で自己完結型で構成可能である必要があります。
于 2012-09-25T05:03:22.927 に答える