ASP.NETページ間でパラメータを渡す方法

9901 ワード

この新しい特性はASPを意味する.NET2.0開発者は現在、1つのウェブページから別のページにデータを転送するための3つの選択可能な技術を持っています.この3つの方法は、リダイレクト、サービス側転送、および新しいウェブページ間コミット特性に応答することです.私たちはすでに前の2つの技術を熟知しているので、簡単に復習しただけで、ウェブページにまたがるコミット特性をどのように使用するかを学び、この方法と応答リダイレクト、サービス伝送方法の違いを説明します.
 
一、応答リダイレクト方法
応答リダイレクト方法は、これまで1つのページを別のページにリダイレクトする最も簡単な方法である.Webサーバがリダイレクト要求を受信すると、応答ヘッダがクライアントに送信され、クライアントが新しい要求をサーバに送信します.すなわち、1つのリダイレクト要求は、実際には2つの要求応答であり、1つは最初の要求応答であり、もう1つは新しいリダイレクト要求応答である.
ASP.NETでリダイレクトを実現するのは簡単です.次のコードでは、Responseの使用方法を示します.Redirectメソッドは、Webページのリダイレクトを実現します.
   protected void Redirect_Click(object sender, EventArgs e) 

  {

      Response.Redirect("menu.aspx"); 

  }

リダイレクト要求はGET要求にすぎないことに注意してください.これは、ソースページからリダイレクトコマンドでデータをコミットできないことを意味します.ただし、リダイレクトではクエリー文字列を使用してデータを渡すことができます.次のコードに示します.
   protected void Redirect_Click(object sender, EventArgs e) 

  {

            Response.Redirect("menu.aspx?userName=" + UserName.Text)); 

     }



                       Response.Redirect     URL。                。



      protected void Page_Load(object sender, EventArgs e) 

  {

        string userName = Request["userName"]; 

      }

 
二、サーバーの伝送方法
クライアントに依存して別の新しいページに要求を送信するのとは異なり、サーバ転送は、Webサーバが処理するコードを簡単に変更することによって、新しいページを要求する目的を達成するサーバリダイレクト技術である.要求されたページとソースページが同じサーバにある場合、サーバ転送はResponseよりも大きい.Redirectメソッドは、サーバのリソースだけでリダイレクトできる追加のオーバーヘッドを回避できるため、より効果的です.この技術には、ページがリダイレクトされると、クライアントのURLがソースページのURLを維持し、得られたデータがソースページによって生成されたと顧客に認識される副作用があることに注意してください.もちろん、ほとんどの場合、これは問題ではありませんが、デバッグがさらに困難になります.
  Server.Transferメソッドは、初期ページのHttpContextを保存することもできます.したがって、ターゲット・ページはソース・ページの値にアクセスできます.FormsCollectionプロパティを使用して、ターゲットページからソースページの値を取得できます.まず、リロードされたメソッドを使用していることを確認します.このメソッドには、ターゲットURLとBooleanタイプの値の2つのパラメータがあり、ソースページの値を記述するFormをサーバに保存するかどうかを示します.次のコードに示します.
   Server.Transfer("Menu.aspx",true);次に、ターゲットページでtxtUserNameというTextboxコントロールの値のコードを取得します.object obj=Requestです.Form["txtUserName"];三、Response.RedirectとServerTransferの比較
なぜならRedirectメソッドでは、リクエスト応答操作を2回行うため、パフォーマンスが要求されるWebサイトでは、このメソッドの使用をできるだけ避ける必要があります.しかし、技術的に言えば、redirect方式を使用すると、確かに1つのページから別のページにジャンプすることができる.それに比べて、Server.Transferはより効率的ですが、ジャンプの範囲は同じWebサーバの異なるWebページに限られます.本質的には、サーバを使用することができます.Transferは、不要な要求応答動作を排除する.異なるサーバのWebページに再配置する必要がある場合は、Responseを使用する必要があります.Redirectメソッド.
四、ページにまたがる提出の概要
ASP.NET 2.0では,IbuttonControlインタフェースの異なるWebFormへのコミットを実現することで,ウェブページ間のコミットを実現できる.とResponse.Redirectと同様に、ウェブページにまたがるコミットはクライアントベースの転送メカニズムであるが、サーバに似ている.Transferは、ターゲットページでもソースページのデータにアクセスできます.ウェブページ間コミットを使用するには、ソースページのPostBackUrlプロパティにターゲットURLを指定する必要があります.
 
五、ウェブページにまたがる提出を実現する
この部分ではASPについて議論します.NET2.0では、Webページ間でのコミットが実現されます.私たちの学習を開始するために、ソースWebページとターゲットWebページの2つのWebページがあると仮定します.ボタンを使用してWebページにまたがるコミット操作を、ソースWebページで初期化しました.まず、ターゲットページボタンのPostBackUrlプロパティを設定する必要があります.ちなみに、Systemはすべて実装されています.Web.UI.WebControls.IbuttonControlインタフェースのWebコントロールには、Webページにまたがってコミットされる機能があります.次のコードでは、この手順を説明します.
PostBackUrl="~/target.aspx"text="Post to a target page"/>PostBackUrlプロパティを設定する場合、ASP.NETフレームワークは、対応するコントロールをWebFormという新しいものにバインドします.DoPostBackWithOptionsのJavaScript関数で生成されるHtmlコードは次のとおりです.
   onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("btnSubmit", "", false, "","Target.aspx", false, false))"id="btnSubmit"/>
上記のhtmlコードでは、ユーザーがボタンをクリックすると、ブラウザはソースURLではなくターゲットURL(Target.aspx)を送信します.
六、ターゲットページからソースページコントロールの値を得る
  ASP.NET2.0は、現在のページがWebページにまたがってコミットされるときにソースページを指すPreviousPageという新しいプロパティを提供します.ソースページとターゲットページが異なるアプリケーションにある場合、このプロパティにはnullが含まれます(このnullは初期化されていないわけではありません).なお、ターゲットページがPreviousPage属性にアクセスすると、ソースページのデータを取得することができる、ASP.NET実行時にソースページをロードして実行しました.これにより、ProcessChildRequestイベントが発生します.また、Page_を引き起こすこともあります.Initイベント、Page_Loadとその他のソースページボタンでイベントをクリックします.
したがって、誤った操作を行うことを避けるためには、IsCrossPostBackプロパティを使用して、ページ間コミットが発生したかどうかを確認することが望ましい.このプロパティ値がtrueの場合、ターゲットページは、ページ間コミットアクションによって呼び出される.一般的なリクエスト、Response.Redirect、またはサーバ.Transferなどの別の方法で呼び出された場合、このプロパティの値はfalseです.次の例では、このプロパティの使用方法を示します.
 
 if ( PreviousPage.IsCrossPagePostBack) 

  {

      //    

  }

//******************************************

    PreviousPage   Server.Transfer            。 ASP.NET2.0 ,       Server.Transfer     PreviousPage                 ,    :

*******************************************//

   { 

     Server.Transfer("menu.aspx"); 

   }



  protected void Redirect_Click(object sender, EventArgs e)



  //               Web     ,    :



   protected void Page_Load(object sender, EventArgs e) 

  {

    if (PreviousPage != null)

    {

       TextBox txtBox = (TextBox)

       PreviousPage.FindControl("txtUserName"); 

       if (textBox != null)

       string userName = textBox.Text; 

       //        

    }

  }

 
 
上記のコードでは、txtUserNameコントロールをTextBoxタイプに変換して、値にアクセスできるようにする必要があります.
七、PreviousPageTypeを使う
PreviousPageTypeプロパティでは、Webページにまたがる操作でソースページにアクセスする強力なタイプの機能が用意されています.次に、どのタイプの変換も行わずにソースページからコントロール値を取得する方法を説明します.コードは次のとおりです.
  < asp:Textbox ID="txtUserName" Runat="server" /> 

  < asp:Textbox ID="txtPassword" Runat="server" />

     < asp:Button ID="Submit" Runat="server" Text="Login"PostBackUrl="Menu.aspx" />

ボタンをクリックすると、「Menu.asp」というターゲットページにリダイレクトできます.このターゲット・ページでは、次のコードを使用してユーザー名とパスワードを取得できます.
八、ビューの状態を保存する
ウェブページにまたがるコミットについては、ASP.NET2.0には__という名前が埋め込まれていますソースページに関するビュー情報、すなわちソースページによって提供される非空のPostBackUrl属性値を有するサービス・エンド・コントロールを含むPOSTBACKの非表示フィールド.ターゲット・ページでは__を使用できます.POSTBTACKの情報は、ソースページのビュー状態情報を取得する.コードは次のとおりです.
   if(PreviousPage!=null && PreviousPage.IsCrossPagePostBack && 

  PreviousPage.IsValid)

  {

       TextBox txtBox = PreviousPage.FindControl("txtUserName"); 

      Response.Write(txtBox.Text); 

    }

 
PreviousPageプロパティがnullでないことを確認するためのチェックコードを上のコードで確認しました.ちなみに、ターゲットページとソースページが同じアプリケーションにない場合、このPreviousPageプロパティの値はnullです.IsCrossPagePostBackプロパティは、Webページにまたがるコミット操作を行う場合にのみtrueです.
このウェブページにまたがるコミットの特性は、ASPです.NET2.0の最も強力な特性の1つであり、この技術は、1つのページで別のページにコミットすることを可能にし、ターゲットページでソースページのデータをシームレスに操作することができる.