ASP.NETグローバル変数の5種類!ページの方法の間で値を渡します

製品より転載は少しライブラリです:http://www.pinlue.com/article/2020/03/0904/5810000440837.html

 

1.のQueryString QueryString変数が値によって非常に単純な方法で、彼は、ブラウザのアドレスバーに表示される値を転送することができます。変速機は、単純な値または多かれ少なかれ厳しい安全構造である場合、この方法を用いることができます。しかし、配列またはオブジェクトを渡すためには、この方法で有する使用することができません。ここでの例である:a.aspx C#コードプライベートボイドのButton1 Click(オブジェクト送信者、System.EventArgs e)の{文字列s_url; s_url = +ます。Label1.Text;のResponse.Redirect(s_url); "B.aspx名="} b.aspx C#コードプライベートボイドをPage_Load(オブジェクト送信者、のEventArgs電子){Label2.Text =場合、Request.QueryString [ "名前"];}

2. Applicationオブジェクト変数のApplicationオブジェクトを使用すると、すべてのユーザーに対して有効であることを、全体のグローバルスコープです。彼らの通常の方法とUNLOCKとロック。a.aspx C#コードプライベートボイドのButton1 Click(オブジェクト送信者、System.EventArgs e)の{アプリケーション[ "名前"] =ます。Label1.Text; Server.Transferを( "b.aspx");} C#コードプライベートボイドb.aspx Page_Load(オブジェクト送信者、のEventArgs電子){文字列名;にApplication.Lock();.名=アプリケーション[ "名前"]のToString(); Application.UnLock();}

3.セッション変数は、私たちは、これは確かに最も一般的な使用方法で使用する必要があり、その過剰ストレージは、サーバーのメモリリソースの枯渇につながることができますので、その動作は、個々のユーザーに作用する、アプリケーションと同様です。a.aspx C#コードプライベートボイドのButton1 Click(オブジェクト送信者、System.EventArgs e)の{セッション[ "名前"] = Label.Text;} b.aspx C#コードプライベートボイドをPage_Load(オブジェクト送信者、のEventArgs電子){文字列名;名=セッション[ "名前"]のToString();}

クッキーがクライアントに格納され、セッションがサーバー上に格納されていること、それもすべてのユーザーのためにあるが、本質的な違いがあるとして、多くの場合、誰もが、そしてセッションで使用されている4.クッキーオブジェクト変数終わり。そして、組み込みオブジェクトASP.NETクッキーの使用で同点に使用するための要求。a.aspx C#コードプライベートボイドのButton1 Click(オブジェクト送信者、System.EventArgs e)の{HttpCookie cookie_name =新しいHttpCookie( "名前"); cookie_name.Value =ます。Label1.Text; Reponse.AppendCookie(cookie_name); Server.Transferを( " b.aspx ");} C#コードプライベートボイドをPage_Load(オブジェクト送信者、のEventArgs電子){文字列名をb.aspx;名= Request.Cookieを[" 名前「] value.ToString();}

5. Server.Transferメソッドは、この方法は、Server.Transferを別のページに現在のページから向けフロー法を用いて、画像オブジェクトの表面の開発に使用されているということができる、新たなページの前にストリームを使用してページ応答、したがって、この方法は、完全に画像オブジェクト、単純かつ効果的な表面です。a.aspx C#のコードパブリック文字列名前{取得{戻ります。Label1.Text;}}プライベート無効のButton1 Click(オブジェクト送信者、System.EventArgs e)の{Server.Transferを( "b.aspx");} C#コードb.aspxプライベートボイドをPage_Load(オブジェクト送信者、のEventArgs電子){newWeb; //インスタンス形態newWeb =(ソース)Context.Handler;文字列名;名= newWeb.Name;}

ASP.NETは、例えば、従来のASPを使用して、私たちがすることができます簡単にPOSTメソッドを使用することにより、開発者はアプリケーションの全体的な設計を簡素化することができますが、これはまた、それに固有の問題のいくつかを引き起こした優れたイベント駆動型のプログラミングモデルを提供しますASP.NETのイベント駆動型プログラミングモデルを使用して、同じことを達成するために、ページ間で値を渡すことは、もちろん、我々はまだ、同じ機能を実現するためにいくつかの方法があり、そう簡単ではありません。この記事では、この記事では、使用クエリ文字列、セッション変数、およびページ間を渡された値を達成するために、Server.Transferをする方法が含まれることが予想され、この問題を解決するための異なる可能な方法を使用しようとします。

使用のQueryString

使用QueryStingは、ページ間で値を渡す(ないこの方法の主な利点は、実装が非常に簡単で、すでに非常に古いメカニズムですが、その欠点は、転送の値は、ブラウザのアドレスバーに表示されていることですオブジェクトを渡すことはないが、安全性)、が、あまり価値の少ない厳しい治安状況渡さでは、この方法が良いプログラムです。次の手順でこの方法を使用します:

図1に示すように、Webフォーム(形式)を作成するコントロールを使用

2、あなたはボタンやリンクボタンを作成するフォームを返すことができます

3. URLに文字変数を作成中、ボタンやリンクボタンのクリックイベントを保存

4、保存されたURLでのQueryStringパラメータを追加

5、上記の保存されたURLをリダイレクトするためのResponse.Redirectを使用

次のコードスニペットは、このメソッドを実装する方法を示しています。

ソースページのコード:

民間のボイドのButton1 Click

(オブジェクト送信者、System.EventArgs e)の

{

文字列のURL。

URL = "?anotherwebform.aspx名=" + TextBox1.Text + "&Eメール=" + TextBox2.Text。

Response.Redirectを(URL);

}

目標ページのコード:

民間のボイドをPage_Load

(オブジェクト送信者、System.EventArgs e)の

{

ます。Label1.Text =場合、Request.QueryString [ "名前"];

Label2.Text =場合、Request.QueryString [ "電子メール"];

}

使用セッション変数

セッション変数は、ページオブジェクトを渡されたコントロールで、我々現在のセッション変数の値この例では、送信されたページの値の間に別の方法で使用して、異なる値を達成するために、別のページにそれを使用することができます。しかし、当然のことながら、我々はまた、リソースを削減するために、いくつかの不要なセッションを削除するには、いくつかのクリーンアップ操作を使用する必要があり、セッション変数にセッションを使用するときに、あまりにも多くのデータが消費する、より多くのサーバリソースを格納することは注意しなければならないことに留意すべきです不要な消費。セッション変数は、以下の値の一般的な手順を使用して渡さ:

1、ページ内の必要なコントロールを追加します

2、あなたはボタンやリンクボタンを作成するフォームを返すことができます

3、ボタンやリンクボタンのクリックイベント、セッション中に制御変数の付加価値で

図4に示すように、別のページのResponse.Redirectにリダイレクトする方法を用いて

5は、セッション内の別のページの値を抽出し、セッションを使用せずに決定されたとき、それが明示的にクリアする必要があります

次のコードスニペットは、このメソッドを実装する方法を示しています。

ソースページのコード:

民間のボイドのButton1 Click

(オブジェクト送信者、System.EventArgs e)の

{

//をTextBox1とTextBox2をWebフォームであります

//コントロール

セッション[ "名前"] = TextBox1.Text;

セッション[ "電子メール"] = TextBox2.Text。

Server.Transferを( "anotherwebform.aspx");

}

目標ページのコード:

民間のボイドをPage_Load

(オブジェクト送信者、System.EventArgs e)の

{

ます。Label1.Text =セッション[ "名前"] ToStringメソッド()。

Label2.Text =セッション[ "電子メール"] ToStringメソッド()。

Session.Remove( "名前");

Session.Remove( "Eメール")。

}

Server.Transferを使用します

方法は、より多くのは少し複雑に比べて、上記の、あなたが、当然のことながら、オブジェクトの属性値が別のページで明らかにアクセスする方法での使用を、この方法を使用することができますページの間で渡された値に特に有用ですこのように、あなたは別のページにアクセスできるようにいくつかのプロパティを作成するために、追加のコードを記述する必要がある、しかし、このアプローチの利点は明白です。全体的に、この方法を使用することは簡単ですが、それはまた、オブジェクト指向です。次のように全体的なプロセスがあり、このメソッドを使用します:

1、ページ内の必要なコントロールを追加します

2.プロパティを取得プロシージャの戻り値を作成します。

3、あなたはボタンやリンクボタンを作成するフォームを返すことができます

4、ボタンのクリックイベントハンドラで、特定のページにServer.Transferメソッド転送を呼び出します

図5は、2ページ目に、我々は、コントロールにアクセスする前にページの値を使用することができるを通じてオブジェクトの前のページの参照インスタンスを取得するためにContext.Handlerプロパティを使用することができ

総合以下のコード上記の手順を実装するコードです:

ソースページのコード:

ページに次のコードを追加します。

公共の文字列名

{

取得する

{

TextBox1.Textを返します。

}

}

公共の文字列をEメールで送信

{

取得する

{

TextBox2.Textを返します。

}

}

そして、Server.Transferメソッドを呼び出します

民間のボイドのButton1 Click

(オブジェクト送信者、System.EventArgs e)の

{

Server.Transferを( "anotherwebform.aspx");

}

目標ページのコード:

民間のボイドをPage_Load

(オブジェクト送信者、System.EventArgs e)の

{

//ソースのWebフォームのインスタンスを作成します

WebForm1にWF1;

//現在のハンドラインスタンスへの参照を取得

WF1 =(WebForm1に)Context.Handler。

ます。Label1.Text = wf1.Name。

Label2.Text = wf1.EMail。

}

公開された60元の記事 ウォン称賛52 ビュー110 000 +

おすすめ

転載: blog.csdn.net/yihuliunian/article/details/104754664