Asp.Netにおけるサービス側コントロールイベントはどのようにトリガーされますか?
7235 ワード
初学ASP.NETの頃は、様々なコントロールの強力な機能に圧倒されたことがあります.もちろん、めまいも起こりやすく、コントロールの名前だけを覚えるのは簡単なことではありません.まして属性、イベント、機能、構成手順がたくさんあります.ははは.その後、これらのものは確かに価値がないと感じ、企業レベルの開発ではあまり使われませんでした.
本文を書く目的は、webformのサービス側コントロールを「けなす」ことや、意図的に「排斥する」ことではなく、ここではその優劣についてあまり議論しません.
しかし、初心者にヒントを与えることがあります:実は多くのコントロールの使い方が悪くて、1つをマスターしてから、他のものを使うのは比較的簡単です.例えばGridViewを使ってからListViewを使うのは決して難しいことではありません.「コントロールの表面に浮かぶ」ことは絶対にしないでください.何かの考え方を形成すると、後で向上しにくいからです.もちろん、Webの本質とこれらのコントロールの内部メカニズムをゆっくり理解して、振り返ってそれらを見ると、本当に簡単だと思います.これはまた「刀を研ぐか薪を切るか」の問題だ.
サーバコントロールをaspxページ(Buttonボタンなど)にドラッグしてダブルクリックすると、バックグラウンドコードにclickイベントが登録されています.または、コントロールの右クリック--「プロパティ」をクリックし、「稲妻アイコン」--イベントを見つけて、対応するイベントを登録することもできます.これが伝説のwebformの「イベント駆動メカニズム」です.VBやwindowsの開発に触れたことがあるなら、暖かくなるかもしれません.
では、これらの事件は、いったいどのように触発されたのだろうか.シミュレーションしてもいいですか?なぜ私は時々Buttonボタンをクリックしてもバックグラウンドイベントをトリガーしないのですか?
Asp.Netでクライアントがサービス側イベントをトリガーする場合は、次の2つに分けられます.
一.WebControlsのButtonとHtmlControlsのTypeがsubmitのHtmlInputButton
この2つのボタンは、最終的にクライアントに表示されます.
これはFormフォームのコミットボタンで、クリックするとパラメータとしてサービス側に送信されます.パラメータは、コントロールのname属性=コントロールのvalue値で、上記の例に対応しています.Submit 1=Submitです.サービス側は、受信したコントロールのname属性のこのkeyに基づいて、このボタンがクリックされたことを知り、サービス側でこのボタンのクリックイベントをトリガーする.
二.HtmlControlsのTypeがbuttonのHtmlInputButtonおよびLinkButtonクリック、TextBoxのChangeイベントなど、他のすべてのコントロールイベント:
これらのイベントは、クライアントが生成されると、統一されたメカニズムを経てサービス側に送信されます.
1.まずasp.Netページフレームワークでは、2つのHiddenドメインを使用して、どのコントロールがトリガーしたかを示すイベントと、イベントのパラメータを格納します.
2.サービス側はjavascriptのメソッドを生成して、これらのすべてのイベントの送信を処理します.このコードは次のとおりです.
3.サービス側イベントを開始する各コントロールは、応答するクライアントイベントで上記のコードを呼び出す
(ブラウザはhtml、js、css、ピクチャなどの静的コンテンツのみを認識し、aspx、php、jspページが最終的にhtmlになり、ユーザーに表示されます)
例えば、HtmlControlsのTypeがbuttonのHtmlInputButtonのクリックイベント
例えば、TextBoxコントロールのChangeイベント
4.クライアントがイベントをトリガーした後に呼び出す_doPostBackメソッドは、トリガーされたコントロールソースを表すeventTargetとイベントパラメータeventArgumentをそれぞれ2つの非表示ドメイン__に付与するEVENTTARGETと_EVENTARGUMENT、それからFormを提出して、サービス側で__に基づいてEVENTTARGETと_EVENTARGUMENTは、どのコントロールのどのイベントがトリガーされたかを判断します.
5.分かった以上_doPostBackという「有名な」関数は、もちろん「チェーンを盗む」こともできます.フォーラムでは、通常のhtmlコントロール(ラベル)とjsでバックグラウンドを呼び出す方法/バックグラウンドイベントを刺激する方法をよく聞かれます.ほほほ.「鎖を盗む」を使って間もなくいいですか?もちろん、実現方法はたくさんありますが、ここではこれ以上説明しません.
こんなにたくさん話して、読者はすでにaspを理解したと信じています.Netではいわゆる「イベントメカニズム」になりました.やはりその言葉、web開発は、「リクエスト/処理/応答」にほかならない.
本文を書く目的は、webformのサービス側コントロールを「けなす」ことや、意図的に「排斥する」ことではなく、ここではその優劣についてあまり議論しません.
しかし、初心者にヒントを与えることがあります:実は多くのコントロールの使い方が悪くて、1つをマスターしてから、他のものを使うのは比較的簡単です.例えばGridViewを使ってからListViewを使うのは決して難しいことではありません.「コントロールの表面に浮かぶ」ことは絶対にしないでください.何かの考え方を形成すると、後で向上しにくいからです.もちろん、Webの本質とこれらのコントロールの内部メカニズムをゆっくり理解して、振り返ってそれらを見ると、本当に簡単だと思います.これはまた「刀を研ぐか薪を切るか」の問題だ.
サーバコントロールをaspxページ(Buttonボタンなど)にドラッグしてダブルクリックすると、バックグラウンドコードにclickイベントが登録されています.または、コントロールの右クリック--「プロパティ」をクリックし、「稲妻アイコン」--イベントを見つけて、対応するイベントを登録することもできます.これが伝説のwebformの「イベント駆動メカニズム」です.VBやwindowsの開発に触れたことがあるなら、暖かくなるかもしれません.
では、これらの事件は、いったいどのように触発されたのだろうか.シミュレーションしてもいいですか?なぜ私は時々Buttonボタンをクリックしてもバックグラウンドイベントをトリガーしないのですか?
Asp.Netでクライアントがサービス側イベントをトリガーする場合は、次の2つに分けられます.
一.WebControlsのButtonとHtmlControlsのTypeがsubmitのHtmlInputButton
この2つのボタンは、最終的にクライアントに表示されます.
< input name="Submit1" id="Submit1" type="submit" value=”Submit”>
これはFormフォームのコミットボタンで、クリックするとパラメータとしてサービス側に送信されます.パラメータは、コントロールのname属性=コントロールのvalue値で、上記の例に対応しています.Submit 1=Submitです.サービス側は、受信したコントロールのname属性のこのkeyに基づいて、このボタンがクリックされたことを知り、サービス側でこのボタンのクリックイベントをトリガーする.
二.HtmlControlsのTypeがbuttonのHtmlInputButtonおよびLinkButtonクリック、TextBoxのChangeイベントなど、他のすべてのコントロールイベント:
これらのイベントは、クライアントが生成されると、統一されたメカニズムを経てサービス側に送信されます.
1.まずasp.Netページフレームワークでは、2つのHiddenドメインを使用して、どのコントロールがトリガーしたかを示すイベントと、イベントのパラメータを格納します.
< !-- , name -->
< input type="hidden" name="__EVENTTARGET" value="" />
< !-- , , -->
< input type="hidden" name="__EVENTARGUMENT" value="" />
2.サービス側はjavascriptのメソッドを生成して、これらのすべてのイベントの送信を処理します.このコードは次のとおりです.
< script type="javascript">
< !--
function __doPostBack(eventTarget, eventArgument) {
var theform = document.WebForm2;
theform.__EVENTTARGET.value = eventTarget;
theform.__EVENTARGUMENT.value = eventArgument;
theform.submit();
}
// -->
< /script>
3.サービス側イベントを開始する各コントロールは、応答するクライアントイベントで上記のコードを呼び出す
(ブラウザはhtml、js、css、ピクチャなどの静的コンテンツのみを認識し、aspx、php、jspページが最終的にhtmlになり、ユーザーに表示されます)
例えば、HtmlControlsのTypeがbuttonのHtmlInputButtonのクリックイベント
< !-- __doPostBack,eventTarget 'Button2', name 'Button2’ ,eventArgument , Type button HtmlInputButton -->
< input language="javascript" onclick="__doPostBack('Button2','')" name="Button2" id="Button2" type="button" value="Button" />
例えば、TextBoxコントロールのChangeイベント
< !-- onchange __doPostBack,eventTarget ’TextBox1’, name ’TextBox1’ , TextBox TextChanged, TextBox TextChanged -->
< input name="TextBox1" type="text" id="TextBox1" onchange="__doPostBack('TextBox1','')" language="javascript" />
4.クライアントがイベントをトリガーした後に呼び出す_doPostBackメソッドは、トリガーされたコントロールソースを表すeventTargetとイベントパラメータeventArgumentをそれぞれ2つの非表示ドメイン__に付与するEVENTTARGETと_EVENTARGUMENT、それからFormを提出して、サービス側で__に基づいてEVENTTARGETと_EVENTARGUMENTは、どのコントロールのどのイベントがトリガーされたかを判断します.
5.分かった以上_doPostBackという「有名な」関数は、もちろん「チェーンを盗む」こともできます.フォーラムでは、通常のhtmlコントロール(ラベル)とjsでバックグラウンドを呼び出す方法/バックグラウンドイベントを刺激する方法をよく聞かれます.ほほほ.「鎖を盗む」を使って間もなくいいですか?もちろん、実現方法はたくさんありますが、ここではこれ以上説明しません.
こんなにたくさん話して、読者はすでにaspを理解したと信じています.Netではいわゆる「イベントメカニズム」になりました.やはりその言葉、web開発は、「リクエスト/処理/応答」にほかならない.