ASP.NETイベント(再送)メカニズム

2007 ワード

要旨:ASP.ENTには,ページPostBackを実現する2つのメカニズムがあり,いずれの返信方式でも最終的にはFormフォームコミットである.
一、元のFormフォームの提出
WebControlsのButtonとImageButtonコントロールは、クライアントに変換されます.
Htmlコード
<input type="submit" name="" /> 

<input type="image" name=""/>

二、JavaScriptと非表示フォームによるフォーム提出
ButtonとImageButtonを除いて、他のWebControlコントロールはこのようにしてページ転送メカニズムを実現しています.具体的な手順は以下の通りである:1、ページにButtonとImageButton以外のサービス側コントロールがある場合、ASP.NETページフレームは、自動的にページに2つの非表示フォームを追加します.
Htmlコード
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> 

<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />

2、サービス側は以下のJavaScriptメソッドを自動的に生成し、イベントの送信を処理する.
Javascriptコード
<script type="text/javascript">   

<!--   

var theForm = document.forms['form1'];   

if (!theForm) {   

    theForm = document.form1;   

}   

function __doPostBack(eventTarget, eventArgument) {   

if (!theForm.onsubmit || (theForm.onsubmit() != false)) {   

        theForm.__EVENTTARGET.value = eventTarget;   

        theForm.__EVENTARGUMENT.value = eventArgument;   

        theForm.submit();   

    }   

}   

// --> 

</script>  


3、サービス側イベントを開始する各コントロールは、応答するクライアントイベントで上記のコードを呼び出す.サービス側コントロールを例に、以下はサービス側からクライアントへのマッピングです.
Htmlコード
<a id="LinkButton1" href="javascript:__doPostBack('LinkButton1','')">LinkButton</a>
 
  :<asp:Checkbox>、<asp:TextBox>                 JS __doPostBack  

4.クライアントがイベントをトリガーした後に呼び出す_doPostBackメソッドは、トリガーされたコントロールソースを表すeventTargetとイベントパラメータeventArgumentをそれぞれ2つの非表示ドメイン__に付与するEVENTTARGETと_EVENTARGUMENT、それからFormを提出して、サービス側で__に基づいてEVENTTARGETと_EVENTARGUMENTは、どのコントロールのどのイベントがトリガーされたかを判断します.