我有一個C#和Razor的ASP.NET MVC3 Web應用程序。在ASP.NET MVC3中共享應用程序範圍內的對象
通過視圖中的表單,我將Context.User.Identity.Name
提交給控制器A中的操作方法。
我想在整個應用程序範圍內(多個控制器之間)提供此變量。 現在我只能夠將其分配給控制器A內的全局變量_UserName,但當然在控制器B中不可用。
有沒有可能這樣做?
感謝
弗朗西斯
我有一個C#和Razor的ASP.NET MVC3 Web應用程序。在ASP.NET MVC3中共享應用程序範圍內的對象
通過視圖中的表單,我將Context.User.Identity.Name
提交給控制器A中的操作方法。
我想在整個應用程序範圍內(多個控制器之間)提供此變量。 現在我只能夠將其分配給控制器A內的全局變量_UserName,但當然在控制器B中不可用。
有沒有可能這樣做?
感謝
弗朗西斯
如果您正在任何控制器中訪問它,您應該在控制器方法中使用HttpContext.User.Identity - 它將在那裏可用。無需存儲在會話中。
你應該看看緩存和可能使用用戶會話存儲這些信息。
退房this問題。
創建一個父控制器,所有的控制器從中繼承並在其中設置變量。你可以做一些從那裏用它的東西 - 在一個視圖模型包起來,把一些用戶細節到ViewBag等
public class UserController : Controller
{
// create your own User class with as many properties as you need
protected User user { get; set; }
public UserController()
{
user = // get user from db, wherever
}
}
隨後,剛剛從UserController的
繼承public class ControllerA : UserController
{
public ActionResult DoSomething()
{
user.Property = 123;
}
}
我真的有時候不理解在這裏的每個人的快速downvoting。這是一個可以工作的答案。可能對他來說不是最方便的,但是誰知道,也許它是? – slandau 2011-05-05 15:15:00