-4

私の C# 分離コード ファイル (.cs) には、System.Web.UI.Page から派生したクラスが 1 つだけあります。クラスには辞書の配列が含まれています。ボタン クリックの 1 つ、つまりボタン クリック イベント ハンドラー関数で、このクラスのオブジェクトを作成し、何かを行います。ここで、別のボタン クリックで、前のボタン クリックで作成されたクラスのオブジェクトまたはインスタンスに属するデータを必要とする何かを行う必要があります。どうすればこれを達成できますか?すべてのデータ、特にそのオブジェクト/クラス インスタンスに属する辞書の配列が必要です。

4

2 に答える 2

3

HTTP はステートレスです。したがって、これを行う直接的な方法はありません。

できることは、これを何らかのストレージメカニズムに保持し、後でアクセスすることです。DB などを検討することができtableますSession...

収納例はこちらSession

 YourClass object1=new YourClass();
 object1.SomeProperty="HTTP is stateless"; 
 Session["ThatObject"]=object1;

このような次のボタンクリックイベントでこれにアクセスできます

 if(Session["ThatObject"]!=null)
 {
   YourClass object1=(YourClass) Session["ThatObject"];
   //now you can access object1 properties here.
 }

セッションがサーバーに保存されるため、サーバーが泣くので、セッションに非常に多くのアイテムを保存することはお勧めできません。

于 2012-06-19T03:31:10.427 に答える
1

リクエスト間で永続化されるように、静的宣言を使用できます。

static IDictionary<string,object> myPersistentDict;

もちろん、このアプローチではスレッド セーフについて心配する必要があります。.NET 4 を使用している場合は、これを処理する組み込みの辞書クラスConcurrentDictionaryがあります。

static ConcurrentDictionary<string, object> myPersistentDict;
于 2012-06-19T03:30:15.777 に答える