我正在使用Razor在MVC3應用程序中工作。在我的帳戶控制器驗證用戶後,我從數據庫中獲取用戶ClientID。在這裏,我想在Session變量中保留ClientID。這是在所有控制器和Razor視圖中使用的。如何在mvc3剃鬚刀視圖中使用會話變量保存數據?
我不知道什麼是實現this.OR的最佳方法.OR如何在會話變量中持久化數據。以及如何在整個控制器中的會話變量中使用持久數據。
感謝您的幫助..
我正在使用Razor在MVC3應用程序中工作。在我的帳戶控制器驗證用戶後,我從數據庫中獲取用戶ClientID。在這裏,我想在Session變量中保留ClientID。這是在所有控制器和Razor視圖中使用的。如何在mvc3剃鬚刀視圖中使用會話變量保存數據?
我不知道什麼是實現this.OR的最佳方法.OR如何在會話變量中持久化數據。以及如何在整個控制器中的會話變量中使用持久數據。
感謝您的幫助..
如果您正在使用ASP.NET窗體身份驗證,用戶名已經存儲在cookie中。您可以通過控制器通過
Controller.User.Identity.Name
可以將用戶ID存儲爲用戶名。當你打電話像
FormsAuthentication.RedirectFromLoginPage
給它的ID而不是名稱。然後可以使用上述方法找到該ID,並且不需要額外的會話數據。如果您想在會話中存儲某些內容,請致電
Session["UserID"] = value;
從您的控制器。
感謝您的答覆..其實我們正在實施的多租戶訪問我們的框架。所以我對在控制器中保存數據感到困惑。那麼你能否告訴我哪一個更好? – user10489 2012-07-25 07:17:49
我平時寫一個會話的包裝,讓我輕而易舉地訪問它的未來:
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;
這可能是有用的http://www.hanselman.com/blog/TroubleshootingExpiredASPNETSessionStateAndYourOptions.aspx – ManirajSS 2015-02-14 06:57:34