5

グローバル宣言変数の例を次に示します。

Public Shared str as String

ただし、このグローバル宣言は 1 つの Web フォームに対してのみです。他の Web フォームが使用できるグローバル変数を宣言することは可能ですか?

4

2 に答える 2

5

Web プログラミング、つまり asp.net はステートレスです。つまり、従来のデスクトップ プログラミングとは異なり、1 つのページ要求は別のページ要求とは何の関係もありません。

ページ間で情報を共有する標準的な方法がいくつかあります。グローバル、セッション、Cookie、キャッシュ、データベース、クエリ文字列パラメーター、およびフォーム ポスト パラメーターです。

グローバル- データは、global.asax ファイルで宣言されたグローバル変数に格納されます。このデータはすべてのユーザー/ページで利用でき、IIS がリセットするか意図的に消去するまで存続します。値が変化し、通常はすべてのユーザー/セッションで変更可能な値を共有していない場合、スレッドの問題に簡単に遭遇する可能性があるため、一般的に非常に悪い考えです。

セッション- データはサーバー側 (または Web サーバーのメモリまたは状態サーバー) に保存されます。これはユーザーごとです。単一の Web サーバーの実装に適しています。ただし、負荷分散された Web サーバーに関するこの単純な投稿には複雑すぎるいくつかの欠点があります。インメモリ セッションは、アプリの再起動中にクリアされる可能性があります。状態サーバーでは、そのイベントでセッション値を永続化できます。ただし、状態サーバーは通常、データベースのラウンドトリップを必要とし、通常、通常のデータベース呼び出しよりも使用する利点がすべて無効になります。

Cookie - データはブラウザーに保存され、ページ要求ごとに送信されます。これはユーザーごとです。通常は 4KB 未満の少量のデータに適しています。ただし、データはブラウザーに送信され、エンド ユーザーは確実に検査できます。通常、データを暗号化する必要があります。負荷分散された Web サーバーには問題はありません。ただし、クライアントとサーバーの間で送受信されるデータ量がわずかに多くなります。また、Web サーバーの再起動に関しても問題はありません。ブラウザを閉じると自動的にクリアされるように設定できます。

キャッシュ- データは、Web サーバーと同じマシン上にある場合とそうでない場合がある memcache のようなキャッシュ メカニズムに保存されます。通常、より高度な分散アプリケーション用です。あなたの研究をしてください。

データベース- データは、MS SQL Server などのある種のデータベースに保存されます。長期にわたって存続する必要がある永続データに最適です。欠点は、オンデマンドでデータを取得するために DB 呼び出しが必要になることです。これは、一般的なハードウェアとネットワークの速度によって軽減されます。セッション状態サーバーにもまったく同じ欠点があることに注意してください。

クエリ文字列- ページ間でデータを転送する簡単な方法. あるページでアカウントのリストを表示し、別のページで単一のアカウント ビューにリンクするなど。通常、アプリケーション全体でデータを保持するのには役立ちません。サイトの特定のビューを簡単にブックマークできます。

フォーム ポスト- クエリ文字列に似ています。主な違いは、データがクエリ文字列行ではなく、あるページから別のページにポストされることです。また、これはブックマーク可能ではありません。

于 2013-02-27T00:58:02.050 に答える
1

次のように、Webフォームのタイプ名を使用してアクセスできます

Dim thisstr = MainPage.str
lblSomeLabel.Text = thisstr

ただし、ページが読み込まれるたびに、ASP.Net スタック全体が再構築されることに注意してください。(それよりも少し複雑ですが、今のところは十分です)。そのため、変数はページ リクエスト間で保持されません。

セッション変数の使用を検討することをお勧めします。

于 2013-02-27T00:36:35.247 に答える