- PR -

[ASP.NET 2.0]ポスト元のボタン名の判定方法

1
投稿者投稿内容
うこたん
常連さん
会議室デビュー日: 2006/07/14
投稿数: 34
投稿日時: 2008-02-13 09:44
いつもお世話になります。

ポストを発生させたボタン名を取得し判定を行いたいのですができますでしょうか?
具体的にやりたいことはボタン1のクリックイベントによるポストなのか、ボタン2のクリックイベントによるポストなのかをPage_Initで判定したいのです。
くまっち
大ベテラン
会議室デビュー日: 2008/01/18
投稿数: 169
お住まい・勤務地: 茨城県のどこか。
投稿日時: 2008-02-13 10:40
解として、Request.Form.AllKeysにButtonIDと同一のKeyがあれば
そのボタンが押されたと判断してよろしいかと思います。


余計な事かもしれませんが・・・
何故Page_Initでイベント発生元のコントロールを特定したいのか?と思います。

http://msdn2.microsoft.com/ja-jp/library/h84w616y(VS.80).aspx

MSDNにも記述されていますが・・・
  • クリックされたボタンを特定する必要がない場合は、Page_Load イベントを使用します。

  • クリックされたボタンを特定する必要がある場合は、Clickイベントのイベント ハンドラを作成します。

このように適切なイベントハンドラにて処理すべきだと思うのですが。

「クリックされたボタン」に限らず「イベント発生元のコントロール」としても同様です。
うこたん
常連さん
会議室デビュー日: 2006/07/14
投稿数: 34
投稿日時: 2008-02-13 11:40
ご回答ありがとうございます。

引用:

余計な事かもしれませんが・・・
何故Page_Initでイベント発生元のコントロールを特定したいのか?と思います。



ポストバック時には必ずPage_Init/Page_Loadが走る為、イベント発生元によって共通処理を行いたい為です。
例えば、ボタン1とボタン2の場合は、特定の処理をしたあとイベントハンドラで処理を行う、その他の場合は、別の処理をしたあとイベントハンドラで処理を行う、のようなイメージです。
それぞれのイベントハンドラに記述するより、Page_Initで判定した方が、後のメンテがしやすいと考えます。
くまっち
大ベテラン
会議室デビュー日: 2008/01/18
投稿数: 169
お住まい・勤務地: 茨城県のどこか。
投稿日時: 2008-02-13 12:22
でしたら、ページのRaisePostBackEventをオーバーライドして
そこでコントロールを判断し共通処理を行った方が良いのではないでしょうか?
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-02-13 13:07
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=43480&forum=7&1「静的なボタンでは下記でできました」と書いてある方法でできると思います。
上記にもあるようにリンクボタンの場合は多少異なるようです。

引用:
それぞれのイベントハンドラに記述するより、Page_Initで判定した方が、後のメンテがしやすいと考えます。

これって単にメソッドに切り分けといて各ハンドラから呼べばいいんじゃないですかね。
Page_Loadのあとじゃタイミング的に遅いって場合は別でしょうけど、

・・あ、一部内容がくまっちさんの最初のレスとかぶってますね。。;;

[ メッセージ編集済み 編集者: べる 編集日時 2008-02-14 00:05 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-02-13 13:17
Init だと、まだ判断出来ないんじゃないかなぁ?まぁ、ポストされたメッセージを直接いじるっていうなら別だけど。
判断したさきで、入力された内容を読んだりするつもりです?


一度、ウェブ アプリケーションで発生するイベントの順番とタイミングを調べておくことを勧めます。
うこたん
常連さん
会議室デビュー日: 2006/07/14
投稿数: 34
投稿日時: 2008-02-14 16:32
皆様、多くのご回答ありがとうございました。
様々な対処方法があるみたいなので、この中でより適したものを考えてみたいと思います。
またなにかありましたらよろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)