在ASP中共享应用程序范围内的对象.净MVC3
本文关键字:对象 MVC3 范围内 应用程序 ASP 共享 | 更新日期: 2023-09-27 17:54:49
我有一个ASP。NET mvc web应用程序,使用c#和Razor。
通过视图中的表单,我将Context.User.Identity.Name
提交给控制器a 中的操作方法。
我想有可用的这个变量应用范围(多个控制器之间)。现在我只能将其分配给控制器a 内的全局变量_UserName,但当然它不可用于控制器B。
这可能吗?
感谢Francesco
如果你在任何控制器中访问这个,你应该在你的控制器方法中使用HttpContext.User.Identity -它将在那里可用。不需要在会话中存储
创建一个父控制器,所有控制器都从它继承,并在那里设置变量。你可以用它做很多事情——将它包装在视图模型中,将一些用户详细信息放入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;
}
}
您应该考虑缓存,并可能使用users会话存储这些信息。
看这个问题