いくつかのボタンを持つユーザー コントロールがあります。
で、特定のボタンが押さpage_load
れていない限りメソッドを実行したい。
ユーザーコントロール内で送信者をチェックするpage_load
と、ボタン自体ではなく、ユーザーコントロールの名前が取得されます。
どのボタンが押されたかを特定する方法はありますpage_load
か? それ以外の場合は、問題を解決するためのハックな方法を考え出す必要があります。
いくつかのボタンを持つユーザー コントロールがあります。
で、特定のボタンが押さpage_load
れていない限りメソッドを実行したい。
ユーザーコントロール内で送信者をチェックするpage_load
と、ボタン自体ではなく、ユーザーコントロールの名前が取得されます。
どのボタンが押されたかを特定する方法はありますpage_load
か? それ以外の場合は、問題を解決するためのハックな方法を考え出す必要があります。
確認できると思いますRequest.Form ("__EVENTTARGET")
-それにはClientID
、コントロールの が含まれている必要があります。
これは、ユーザーがクリックしたものを追跡するために ASP.NET イベント処理フレームワークが使用する非表示フィールドの値を参照します。ユーザーがポストバックをトリガーすると、ページ上の一部の JavaScript がClientID
、フォームを送信する前にクリックしたコントロールのこの非表示フィールドを設定します。
特定のボタンが押されたかどうかを確認する簡単な方法は次のとおりです。
protected bool isButtonClicked(string buttonName)
{
bool isClicked = false;
foreach (string ctl in this.Request.Form)
{
if (ctl.EndsWith(buttonName))
{
isButtonClicked = true;
break;
}
}
return isClicked;
}
クリックされたボタンを返す(またはフラグなどを設定する)ために、ユーザーコントロールにプロパティを作成し、ユーザーコントロール内の各ボタンのクリックイベントに設定できますか?
ページ モデルを正しく処理していますか? Page Load イベントが (サーバー側オブジェクト モデルを構築するために) 発生すると、コントロールはコントロールにバインドされたボタン クリック イベントを処理します。
ページの読み込みは、ユーザー コントロールのボタンがクリックされる以外にも、さまざまなポストバックの理由で発生する可能性があります。
ページ上の他のコントロールのボタンはどうですか?
これを行う正当な理由がある場合もありますが、ASP.NET ページ モデルをハッキングしているだけなのではないかと心配しています。