ASP.NETクロスページ転送方法

4039 ワード

1.QueryString変数の使用
QueryStringは非常に簡単な値伝達方式で、ブラウザのアドレスバーに転送された値を表示することができます.この方法は、1つ以上のセキュリティ要件が高くない場合や、構造が簡単な数値を渡す場合に使用できます.しかし配列やオブジェクトを渡すには,この方法は使えない.次に例を示します.
a.aspxのC#コード
 
  
private void Button1_Click(object sender, System.EventArgs e)
{
string s_url;
s_url = "b.aspx?name=" + Label1.Text;
Response.Redirect(s_url);
}

b.aspxにおけるC#コード
 
  
private void Page_Load(object sender, EventArgs e)
{
Label2.Text = Request.QueryString["name"];
}

2.アプリケーションオブジェクト変数の使用
Applicationオブジェクトの役割範囲は、グローバル全体、つまりすべてのユーザーに有効です.その一般的な方法はLockとUnLockである.
a.aspxのC#コード
 
  
private void Button1_Click(object sender, System.EventArgs e)
{
Application["name"] = Label1.Text;
Server.Transfer("b.aspx");
}

b.aspxにおけるC#コード
 
  
private void Page_Load(object sender, EventArgs e)
{
string name;
Application.Lock();
name = Application["name"].ToString();
Application.UnLock();
}

3.Session変数の使用
これはきっと皆さんが使っている中で最も一般的な使い方に違いありません.その操作はApplicationと似ていて、ユーザー個人に作用します.そのため、過剰なストレージはサーバーのメモリリソースの消費を招きます.
a.aspxのC#コード
 
  
private void Button1_Click(object sender, System.EventArgs e)
{
Session["name"] = Label.Text;
}

b.aspxにおけるC#コード
 
  
private void Page_Load(object sender, EventArgs e)
{
string name;
name = Session["name"].ToString();
}

4.Cookieオブジェクト変数の使用
これもよく使われる方法で、Sessionと同じように、ユーザー一人一人にとって何なのかということですが、Cookieはクライアントに保存され、sessionはサーバ側に保存されているという本質的な違いがあります.そしてCookieの使用はASPに合わせる.NET内蔵オブジェクトRequestを使用します.
a.aspxのC#コード
 
  
private void Button1_Click(object sender, System.EventArgs e)
{
HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = Label1.Text;
Reponse.AppendCookie(cookie_name);
Server.Transfer("b.aspx");
}

b.aspxにおけるC#コード
 
  
private void Page_Load(object sender, EventArgs e)
{
string name;
name = Request.Cookie["name"].Value.ToString();
}

5.サーバーを使用します.Transferメソッド
これこそ,顔象オブジェクトの開発に用いる手法であり,サーバを用いるといえる.Transferメソッドは,プロセスを現在のページから別のページに導くが,新しいページは前のページの応答フローを用いるため,このメソッドは完全に面象オブジェクトであり,簡潔で有効である.
a.aspxのC#コード
 
  
public string Name
{
get{ return Label1.Text;}
}
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("b.aspx");
}

b.aspxにおけるC#コード
 
  
private void Page_Load(object sender, EventArgs e)
{
a newWeb; // a
newWeb = (source)Context.Handler;
string name;
name = newWeb.Name;
}

6.postメソッド
 
  







// (post)2
this.Response.Write("
" + this.Request.Form["xm"]);
this.Response.Write("
" + this.Request.Form["xb"]);
this.Response.Write("
:" + this.Request.RequestType);
this.Response.Write("
POST !");