7

Razorを使用してMVC3アプリケーションで作業しています。ユーザーを検証した後のアカウント コントローラーで、データベースからユーザーの ClientID を取得しています。ここでは、ClientID を Session 変数に保持したいと考えています。これは、すべてのコントローラーと Razor ビューで使用されていました。

これを実装する最良の方法についてはわかりません。または、セッション変数にデータを保持する方法。また、コントローラー全体でセッション変数で永続化されたデータを使用する方法。

ご協力いただきありがとうございます..

4

2 に答える 2

18

私は通常、将来簡単にアクセスできるようにするセッションラッパーを作成します。

public class SessionData
{
    const string ClientId_KEY = "ClientId";

    public static int ClientId
    {
        get { return HttpContext.Current.Session[ClientId_KEY] != null ? (int)HttpContext.Current.Session[ClientId_KEY] : 0; }
        set { HttpContext.Current.Session[ClientId_KEY] = value; }
    }
}

その後、次のようにどこからでもアクセスできます。

int clientId = SessionData.ClientId;

必要に応じて、このように Session でオブジェクト全体を使用できます。

または、次のように設定できます。SessionData.ClientId = clientId;

于 2012-07-25T06:24:46.083 に答える
2

ASP.NET フォーム認証を使用している場合、ユーザー名は既に Cookie に保存されています。経由でコントローラからアクセスできます

Controller.User.Identity.Name

ユーザー ID をユーザー名として保存することができます。次のようなものを呼び出すと

FormsAuthentication.RedirectFromLoginPage

名前の代わりに ID を指定します。その後、上記の方法を使用して ID を見つけることができ、追加のセッション データは必要ありません。セッションに何かを保存したい場合は、呼び出すだけです

Session["UserID"] = value;

コントローラーから。

于 2012-07-25T06:22:53.120 に答える