ネストされたユーザーコントロールでポストバックをシミュレートする方法は?

StackOverflow https://stackoverflow.com/questions/801812

  •  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イベントで設定される変数になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top