2

我有一个带有 C# 和 Razor 的 ASP.NET MVC3 Web 应用程序。

通过 View 中的表单,我将Context.User.Identity.Name提交到Controller A中的操作方法。

我想在应用程序范围内(在多个控制器之间)使用这个变量。现在我只能将它分配给Controller A中的全局变量_UserName ,但当然它在Controller B中不可用。

有可能这样做吗?

谢谢

弗朗切斯科

4

3 回答 3

1

如果您在任何控制器中访问它,您应该在您的控制器方法中使用 HttpContext.User.Identity - 它在那里可用。无需存储在会话中。

于 2011-05-05T14:52:52.810 回答
1

创建一个父控制器,您的所有控制器都从该控制器继承并在那里设置变量。你可以从那里用它做很多事情——将它包装在视图模型中,将一些用户详细信息放入 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;
    }
}
于 2011-05-05T15:10:52.460 回答
0

您应该研究缓存并可能使用用户会话存储此信息。

看看这个问题。

于 2011-05-05T14:28:17.880 回答