asp.Netグローバル変数共有インスタンス

2728 ワード

メソッド情報量サイズ保存時間適用範囲保存位置
アプリケーションのライフサイクル全体の任意のサイズのすべてのユーザー・サーバ
Session小量、単純なデータ・ユーザー・アクティビティ時間+遅延時間(一般的には20分)単一ユーザー・サーバ・エンド
Cookieは小量で、簡単なデータは必要に応じて単一のユーザークライアントを設定することができます
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;

}