asp.Netページリターン

13154 ワード

__VIEWSTATE:ページステータス情報クライアントの格納(ViewStateに格納された情報、EnableViewState="true"のコントロールステータス情報)._EVENTTARGET:ページエコートリガイベントページエコートリガイベント:
__doPostBack('Button 2',')は、呼び出しボタンButton 2がバックエンドの対応するクリックイベントコントロールからトリガーイベントを返信することを示す.
__doPostBack('TEST 1$Button 1',')は、TEST 1コントロールのButton 1ボタンを呼び出すClickメソッド__を表します.EVENTARGUMENT:ページエコートリガイベントのパラメータ:_doPostBack('Button 1','aa')はバックエンドでRequestを使用することができる.Form["_EVENTARGUMENT"]で取得する.Netで自動的に生成されたクライアントのコードの一部は、データと自分で持っているスクリプト関数======================================================
今日の作業では、Gridviewの具体的な内容に基づいてウィンドウをポップアップするかどうかを判断する必要がありますが、Gridviewにはページング、ソートなどが含まれており、クエリー文字列やフォームから直接分析することはできません.それは存在するからですdoPostBackメソッド、およびそれに密接に関連する_EVENTTARGETと_EVENTARGUMENT.
function __doPostBack(eventTarget,eventArgument)のeventTargetパラメータはGridViewコントロールの名前、eventArgumentパラメータはコマンドワードです.削除の場合、eventArgumentパラメータはDeleteの先頭です.挿入の場合、eventArgumentパラメータはInsertの先頭です.編集の場合、eventArgumentパラメータは編集の先頭です.選択した場合、eventArgumentパラメータはSelectの先頭になります.==========================================================================================doPostBackメソッドは、トリガーされたコントロールソースを表すeventTargetとイベントパラメータeventArgumentをそれぞれ2つの非表示ドメイン__に付与するEVENTTARGETと_EVENTARGUMENT、それからFormを提出して、サービス側で__に基づいてEVENTTARGETと_EVENTARGUMENTは、どのコントロールのどのイベントがトリガーされたかを判断します.
? < script language= "javascript" >  
  function __doPostBack(eventTarget, eventArgument)
  {
     var theform = document.WebForm2;
    theform.__EVENTTARGET.value = eventTarget;
    theform.__EVENTARGUMENT.value = eventArgument;
    theform.submit();
    }
  < /script>
 
=================================================================Asp.NetのpostbackメカニズムはAspを知っています.Netがクライアントに出力されるとHTMLに変換され、ページRenderがClientになると、ClientのHTMLコードには次のコードが含まれます.
  <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />

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

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTA0NDQ2OTE5OWRk281L4eAk7iZT10hzg+BeOyoUWBQ=" />

<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>


 
フィールドを非表示にするEVENTTARGETは、イベントをトリガーするコントロールを表します._EVENTARGUMENTはイベントの追加パラメータを表します.PostBack後もページがサーバコントロールの元の状態データを読み取ることができるように、Asp.NetではViewStateテクノロジーが使用されていますが、ViewStateテクノロジーは本質的にデフォルト名で_VIEWSTATEのHiddenタイプフォームドメインは、データを保存および転送するために使用される(これらのデータは、シーケンス化されたBase 64によって符号化された文字列値である).コントロールのイベントがRenderによってjavascriptに変更されました:_doPostBack('Button1','')
例えば次のように

===============================================================================================
ここは1篇の博文を見ることができます:http://www.cnblogs.com/Silicon-Fado/archive/2009/04/21/1440437.html
2つのWebサーバControlだけがページのPostBackを自分でトリガーし、他のすべてのコントロールは__を通過します.doPostBack関数はページのPostBackをトリガし、ページ解析時にクラスを生成します.doPostBack(eventTarget,eventArgument)メソッド.eventTargetは返信を引き起こすコントロールのIDであり、eventArgumentはコールバックパラメータ(コントロールに関連する追加データ)である.この2つのパラメータは、それぞれ非表示の2つのフォームドメイン__によって表されます.EVENTTARGETと_EVENTARGUMENT保存.この2つの非表示のフォームを使用して、ページの返信を引き起こすコントロールIDと返信時のパラメータを検索します.
トリガーするとdoPostBackイベントの時、thisを巡ります.Request.Form.AllKeys、この2つの非表示のフォームを表示します.
最終的にブラウザに提示コンテンツはhtmlコンテンツであるためaspを採用する.Netテクノロジーも例外ではない.Webcontrolのpostbackメカニズムを実現する.元のsubmitでしか文章を作ることができません.
見たよaspNetは現在、postbackをトリガするcontrolのIDとパラメータを格納するために2つのhidden inputをページに追加する.これが私たちのほとんどの人が認識しています
__doPostBack(obj 1,obj 2)の1番目のパラメータはコントロールID、2番目のパラメータはpostbackのパラメータである.バックグラウンドでRequestを使うことができますForm[_EVENTTARGET]とRequest.Form["_EVENTARGUMENT"]はコントロールIDとパラメータを取得する.
内部に何か深い処理があると思っていた過程を簡単に実現しました!このように軽くaspを実現した.Netのpostbackメカニズム、感心!上のコードさえ読めばdoPostBackの使用は難しくないはずです.と言っていいほどdoPostBackはこんな簡単なことです.--||
しかし、また注意しなければならないのはaspです.Netのwebcontrolsでは、ButtonとImgButtonは異種であり、利用ではありません.doPostBackはpostbackを実現する.なぜなら、Buttonはhtmlにsubmitイベントをトリガーする機能があるからでしょう.asp.Netは、元のhtmlでsubmitをトリガーできないものをsubmitさせるために作られたにすぎない.doPostBackが実現するもともとsubmitができたButtonに対して、そんなに多くのことをする必要はありません.以上のようにバックグラウンドでButtonを見つけることができます.どうして?知らない、ほほほ.Buttonのコミット中、ButtonはButton自身のIDをRequestとする.Formのキーで、ValueはButtonのText属性値で、サーバに返信します.だからバックグラウンドでFormをループすることができます.Keysは、対応する関数を実行するためにコミットされたButtonを取得する.ImgButtonもさほど差がないが、違いは、ImageButtonのIDをRequestとして使用することではないことである.FormのKeyは、ImageButtonのIDで付けられています.x和.yはキーとしてRequestでFormは2つのキー値のペアを追加し、この2つのキー値はImageButtonのピクチャサイズに対応するべきであり、この法則を理解した後も、ImageButtonによるPostBackかどうかは一定の方法で得ることができる.
 
次の私が書いた簡単なページの例のように、
(1)ページのドロップダウンリストがhymlに表示される場合
<select name="DropDownList2" onchange="javascript:setTimeout(&#39;__doPostBack(\&#39;DropDownList2\&#39;,\&#39;\&#39;)&#39;, 0)" id="DropDownList2">

<option value="-- --">-- --</option>

<option value=" 1"> 1</option>

<option selected="selected" value=" 2"> 2</option>

<option value=" 3"> 3</option>

<option value=" 4"> 4</option>


</select>


見える
onchange="javascript:setTimeout(&#39;__doPostBack(\&#39;DropDownList2\&#39;,\&#39;\&#39;)&#39;, 0)" id="DropDownList2">


ここでドロップダウンリストは_を通ります.doPostBack関数はページのPostBackをトリガし、ページ解析時にクラスを生成します.doPostBack(eventTarget,eventArgument)メソッド.
(2)ボタンについては、こうなります
 
<input type="submit" name="Button1" value="  " id="Button1" />

ボタンは使用されませんでした_理由はaspだNetのwebcontrolsでは、ButtonとImgButtonは異種であり、利用ではありません.doPostBackはpostbackを実現する.なぜなら、Buttonはhtmlにsubmitイベントをトリガーする機能があるからでしょう.asp.Netは、元のhtmlでsubmitをトリガーできないものをsubmitさせるために作られたにすぎない.doPostBackが実現するもともとsubmitができたButtonに対して、そんなに多くのことをする必要はありません.
 ===================================================================================================
ボタンがクリックされるとトリガーされます_doPostBackイベント、doPostBackイベントはフォームをServerに提出し、Server側は__を通過した.EVENTTARGETというhidden fieldの値は対応するサーバ側のControlを見つける.次に、サーバは、ControlがPageを呼び出すRaisePostBackEventを実装するかどうかを確認します.この関数の定義は次のとおりです.
protected virtual void RaisePostBackEvent(IPostBackEventHandler sourceControl, string eventArgument)

{

sourceControl.RaisePostBackEvent(eventArgument);

}


 
関数は、このコントロール内の
protected virtual void RaisePostBackEvent(string eventArgument)

{

base.ValidateEvent(this.UniqueID, eventArgument);

iif (this.CausesValidation)

{

this.Page.Validate(this.ValidationGroup);

}

this.OnClick(EventArgs.Empty);

this.OnCommand(new CommandEventArgs(this.CommandName, this.CommandArgument));

}


OnCommandは、あなたが定義したコントロールの関数を実現します.