こんにちは私はasp.netのボタンクリックに疑問があります。.aspxページのOnClickイベントのようなボタンコントロールと他のいくつかのコントロール(ボタン、テキストボックス)を配置しました。ページを実行すると、ボタンはここのようにブラウザのページソースに表示され、onclickイベントは表示されません。次に、ページがサーバー側でボタンクリックを呼び出す方法、サーバー側が送信の原因となるボタンを識別する方法、およびこのページがサーバー側に移動する方法。
3 に答える
約の場合、このコントロールはデフォルトでtype = "submit"<asp:Button />
の入力をレンダリングし、ブラウザのデフォルトのメカニズムを使用してフォームを送信します。ASP .Netは、投稿された値を確認することにより、クリックされたボタンを識別します。ブラウザがフォームを送信すると、POSTリクエストに、クリックされたボタンの名前と値が、他の送信入力を除く他の入力の名前と値とともに書き込まれます。したがって、1つの送信入力の名前がサーバーに送信され、このようにしてASP.Netはどのボタンがクリックされたかを確認します。
このサーバーコントロールにはUseSubmitBehaviorプロパティもあり、これがfalseに設定されている場合は、ボタンタイプの入力が生成されます。ボタンはフォームを送信しないため、ASP.Netはジョブを実行するJavaScriptを生成します
<script type="text/javascript">
//<![CDATA[
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>
_EVENTTARGETと_ __EVENTARGUMENTフィールド。これらのフィールドは、ASP.Netがクライアントでクリックされたボタンを認識できるように設定されています。
<input type="button"
name="rptMain$ctl02$DeleteButton"
value="Delete" onclick="__doPostBack('rptMain$ctl02$DeleteButton','')"
id="rptMain_ctl02_DeleteButton" />
__doPostBack関数に渡された引数に注意してください。入力の名前が渡され、EVENTTARGETに設定されます。EVENTTARGETの値はASP.Netによって読み取られ、これに基づいて<asp:Button />
コントロールのClickイベントが発生します
EVENTARGUMENTはItemCommandイベントによって使用され、通常はDataBoundコントロールに配置され、そのアクションに関する特定のデータが含まれ、後でイベントを処理するときに使用されます。このデータは、たとえばデータベーステーブルの行のIDにすることができます。
ASP.NET Webフォームでは、すべてのボタンによってフォーム全体がサーバーに送信されます。Webフォームエンジンは、クリックされたボタンをチェックし、適切なイベントハンドラーを呼び出します。
コントロールのonclick属性を指定した場合、このようにクライアントに渡されることはありません。代わりに、aspxファイルを解析するときにIISの配線のみを指定します
代替案は次のようになります。
myControl.Click += new EventHandler(specifiedMethod);
したがって、イベントが発生すると、呼び出すメソッドがわかります。