ASP.NETイベント(再送)メカニズム
2007 ワード
要旨:ASP.ENTには,ページPostBackを実現する2つのメカニズムがあり,いずれの返信方式でも最終的にはFormフォームコミットである.
一、元のFormフォームの提出
WebControlsのButtonとImageButtonコントロールは、クライアントに変換されます.
Htmlコード
二、JavaScriptと非表示フォームによるフォーム提出
ButtonとImageButtonを除いて、他のWebControlコントロールはこのようにしてページ転送メカニズムを実現しています.具体的な手順は以下の通りである:1、ページにButtonとImageButton以外のサービス側コントロールがある場合、ASP.NETページフレームは、自動的にページに2つの非表示フォームを追加します.
Htmlコード
2、サービス側は以下のJavaScriptメソッドを自動的に生成し、イベントの送信を処理する.
Javascriptコード
3、サービス側イベントを開始する各コントロールは、応答するクライアントイベントで上記のコードを呼び出す.サービス側コントロールを例に、以下はサービス側からクライアントへのマッピングです.
Htmlコード
4.クライアントがイベントをトリガーした後に呼び出す_doPostBackメソッドは、トリガーされたコントロールソースを表すeventTargetとイベントパラメータeventArgumentをそれぞれ2つの非表示ドメイン__に付与するEVENTTARGETと_EVENTARGUMENT、それからFormを提出して、サービス側で__に基づいてEVENTTARGETと_EVENTARGUMENTは、どのコントロールのどのイベントがトリガーされたかを判断します.
一、元の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は、どのコントロールのどのイベントがトリガーされたかを判断します.