2016-12-31 20 views
0

一般的なASP.NET Webフォーム内に有限状態マシン(FSM)を実装したい。私はPage_Load()イベントが発生するたびにFSMの "エンジン"を自動的に呼び出すことを望みますが、これは簡単ですが、Page_Load()が発生したイベントに関する情報をエンジンが受け取るようにします。問題は、ASP.NET Webフォームでは、ボタンのクリックなどのユーザー制御のイベントによってページがリロードされる可能性がありますが、ボタン自体のイベントハンドラはPage_Load()イベントが発生します。私が知る限り、Page_Load()ハンドラ自体には、ユーザーイベントによってページがリロードされた原因に関する情報は含まれていません。私は、各イベントハンドラメソッド内からFSMエンジンを明示的に呼び出す必要はないと考えています。これを達成する方法はありますか? - ページライフサイクルでPage_Load()やその他の段階を持つために、特定のユーザーアクションによってページがリロードされた原因を「知っている」ことがわかっていますか?ASP.NET Webフォームで、Page_Load()の原因を特定する方法

+0

ソリューションはここにあるように見えます:「http://stackoverflow.com/questions/20838022/eventtarget -is-empty-on-button-of-button-click " – user1294460

答えて

1

ASP.NET Webフォームは、Requestオブジェクトのパラメータに格納します。あなたはこのようにそれを取得することができます:

// Find the control name 
string nameOfControlWhichCausedPostback = page.Request.Params.Get("__EVENTTARGET"); 

そして、その名前のコントロールを見つける:

if (!String.IsNullOrWhitespace(nameOfControlWhichCausedPostback)) 
{ 
    var ctrl = page.FindControl(nameOfControlWhichCausedPostback); 
} 
+0

__EVENTTARGETがPage.Request.Paramsのリストにないことに驚いています。ボタンのクリックは確実にPage_Load()を呼び出していますが、その項目は存在しません。 – user1294460

+0

http://stackoverflow.com/questions/20838022/eventtarget-is-empty-on-postback-of-button-click – user1294460

関連する問題