5

関数を使用するとLinkButtondoPostBack()関数がページにレンダリングされ、ボタンがクリックdoPostBack()されると、クライアント側で呼び出され、フォームがサーバーに送信され、とという2つの非表示フィールドに情報が送信されEVENTTARGETますEVENTARGUMENT。はEVENTTARGET、ポストバックの原因となったコントロール名をEVENTARGUMENT保持し、情報を保持します。

このASP.NETエンジンでは、EVENTTARGET引数からコントロール名を取得します。これにより、ポストバックが発生し、RaisePostBackEvent()イベントが呼び出されて、右側のサーバー側のイベントハンドラーが呼び出されます。どのようにdoPostBack()機能し、サーバー側のイベントハンドラーがどのように呼び出されるかを理解しています。

ただし、通常のサーバーボタンの場合、サーバー側での正しいボタンクリックはどのように呼び出されますか?クライアント側でクリックされたコントロール名について、ASP.NETはどのように通知されますか?

4

2 に答える 2

4

通常のASP.NETは、一意の属性を持つButtonHTML要素としてレンダリングされます。デフォルトでは、このHTML要素は現在のASPXページに関連付けられたHTMLフォームへのHTTPPOSTをトリガーします。<input type="submit">name

HTTP POSTが発生すると、フォームデータセットと呼ばれる一連のコントロール名/現在の値のペアがフォーム内の成功したコントロールから構築されます。たとえば、テキストボックス内のテキスト値は次のように送信されます。送信をトリガーしたボタンの名前とのペアもサーバーに送信されます。これにより、ASP.NETはどのボタンがHTTPPOSTをトリガーしたかを認識します。

HTML仕様では、投稿されたフォームデータセットに対してフォーム内の成功したコントロールのみが考慮され、成功したコントロールの定義には次のルールが含まれていることが保証されています。

フォームに複数の送信ボタンが含まれている場合、アクティブ化された送信ボタンのみが成功します。

次に、ASP.NETは、投稿されたフォームデータセットをチェックして、通常のボタンがトリガーされたかどうかをチェックできます。

于 2012-05-17T14:28:08.847 に答える
0

一般的に言って、ボタンクリックの内部について心配する必要はありません。これが.Netの美しさです。

ただし、クライアントで何が呼び出されているかを具体的に知るには、ページのソースを表示して、ボタンに対して何が呼び出されているかを確認するだけです。

例:

<input name="ctl00$MainContent$btnMyButton" id="ctl00_MainContent_btnMyButton" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContent$btnMyButton", "", true, "", "", false, false))" type="submit" value="My Button"/>

.Netが次のjavascriptルーチンを挿入することに注意してください。

WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContent$btnMyButton", "", true, "", "", false, false))
于 2012-05-17T14:27:56.307 に答える