在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

在ASP中共享应用程序范围内的对象.净MVC3

如果你在任何控制器中访问这个,你应该在你的控制器方法中使用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会话存储这些信息。

看这个问题