ネストされたユーザーコントロールでポストバックをシミュレートする方法は?
-
03-07-2019 - |
質問
1ページでasp.netアプリケーションを実行しています。このページでは、1つのユーザーコントロールが定義されています。このユーザーコントロールには、メニュー(3つのボタン)と3つのユーザーコントロールも定義されています。クリックされたボタンに応じて、3つのユーザーコントロールのいずれかが表示されるtrueまたはfalseになります。
これら3つのユーザーコントロールにはボタンとメッセージがあり、「ポストバックではありません」というメッセージを表示したいと思います。メニューのボタンがクリックされ、ユーザーコントロールのボタンがクリックされると、メッセージは「はい、ポストバックです!!!」になります。
問題は、プロパティ" IsPostBack"を使用することですユーザーコントロールまたはページのメッセージは決して「ポストバックではありません」ネストされたユーザーコントロールを表示するメニューのボタンをクリックしたためです。
これはページの構造です:
page
parent usercontrol
menu
nested usercontrol 1
message
button
nested usercontrol 2
nested usercontrol 3
ViewStateを使用して実行できることはわかっていますが、IsPostBackプロパティをシミュレートする方法や、真のユーザーコントロールポストバックがいつ行われるかを知る方法はありますか?
ありがとう。
解決
この問題の解決策があります。要素が発生すると、Request.Formコレクションのイベントがサーバーに送信されるため、ネストされたユーザーコントロールに、Request.Formコレクションに子コントロール(ユーザーコントロール自体で定義されている)があるかどうかを確認するプロパティを作成しました。
public bool IsUserControlPostBack
{
get
{
foreach (Control c in Controls)
foreach(string key in Page.Request.Form.AllKeys)
if( c.ClientID == key.Replace('
このコードは、ユーザーコントロールのプロパティ、または何度も呼び出される場合は、ユーザーコントロールのOnInitイベントで設定される変数になります。
,'_'))
return true;
return false;
}
}
このコードは、ユーザーコントロールのプロパティ、または何度も呼び出される場合は、ユーザーコントロールのOnInitイベントで設定される変数になります。