0

セッションについて何か誤解しているに違いありません。いくつかの情報を保存しようとしているので、詳細を説明させてください。

ビジネス オブジェクトのリストを保持する「コンテナー」クラスを次に示します。このコンテナはセッションに保存されます。

public class MySessionContainer {
    private IList<SomeBusinessObjectType> _BusinessObjectList = new List<SomeBusinessObjectType>();
    public IList<SomeBusinessObjectType> BusinessObjectList {
        get { return _BusinessObjectList; }
        set { _BusinessObjectList = value; }
    }
}

ウィザード/マルチステップ プロセスを形成する一連のページがあり、それらはすべて、セッション中のコンテナー内のビジネス オブジェクトのリストにアクセスする必要があります。

最初のページでは、ビジネス オブジェクトがセッションのリストに追加されるため、この種のコードを使用してそれを実現します。

string key = GetKeyForCurrentUser();
MySessionContainer container = (MySessionContainer) Session[key];

SomeBusinessObjectType businessObject = /* Get object from view. */;

container.BusinessObjectList.Add(businessObject);

生成されたキーは、すべてのページで常に同じです。

ただし、ユーザーが 2 番目のページに到達すると、コンテナーは期待どおりにセッションに入っていますが、ビジネス オブジェクトのリストは空であり、これは予期したことではありません。最初のページでビジネス オブジェクトを追加すると、2 ページ目以降のページにもそれが存在するはずです。

ASP.net のセッションについて理解していないことはありますか? コンテナがセッションにあるのにリストにないのはなぜですか? ASP.netがセッションから書き込み/読み取りを行うときに、リストはコンテナオブジェクトでシリアル化されていませんか?

4

3 に答える 3

2

セッションに書き戻す必要があります。

セッション変数の下の例を見てください。

// When retrieving an object from session state, cast it to 
// the appropriate type.
ArrayList stockPicks = (ArrayList)Session["StockPicks"];

// Write the modified stock picks list back to session state.
Session["StockPicks"] = stockPicks;

ASP セッション状態の概要

于 2013-07-31T18:32:14.623 に答える