2

誰かがログインしたときにユーザー オブジェクト (他のナビゲーション プロパティを含む) が格納される機能を実装する必要があります。

たとえば、データベースにアクセスする必要がないように、ユーザーに関連する情報を取得するときにこの情報にアクセスしたい

ユーザーにはアナウンスがあるので、それを照会する必要がある場合は、このようにしたい

    Announcements announcements = Storage.User.Announcements;
    var result = from m in announcements 
                 where m.DueDate== 'someting'

ユーザーに関連付けられた多くの機能があり、DB から取得せずにレコードを保持してクエリしたい

ユーザーが Storage.User から値をログアウトすると、クリーンアップする必要があります

シングルトン パターンを実装しましたが、機能しません

PLは、パターンまたはプラクティスを提案します

4

1 に答える 1

0

新しいリクエストが行われるたびに、コントローラー (およびコントローラーによって生成されたオブジェクト) が再生成されるため、シングルトーンはここでは機能しません。HTTP は状態を保持しません。覚えておいてください。

永続化するには、オブジェクトをセッションに保存できます。

ログインするときは、次のようにします。

HttpContext.Current.Session["the-session-key"] = YourObject

オブジェクトにアクセスする必要がある場合は、次のようにします。

YourObjectType yourObject = (YourObjectType)HttpContext.Current.Session["the-session-key"]

セッションをクリアするには、次のようにします。

HttpContext.Current.Session.Clear();

コントローラー内で実行している場合は、コントローラーのSessionwithSessionプロパティに直接アクセスできます。

たとえば、コントローラーでは、次のようにすることができます。

Session.Clear()
于 2012-08-08T17:10:02.277 に答える