2011-05-05 51 views
2

我有一个C#和Razor的ASP.NET MVC3 Web应用程序。在ASP.NET MVC3中共享应用程序范围内的对象

通过视图中的表单,我将Context.User.Identity.Name提交给控制器A中的操作方法。

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

有没有可能这样做?

感谢

弗朗西斯

回答

1

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

0

你应该看看缓存和可能使用用户会话存储这些信息。

退房this问题。

+0

我真的有时候不理解在这里的每个人的快速downvoting。这是一个可以工作的答案。可能对他来说不是最方便的,但是谁知道,也许它是? – slandau 2011-05-05 15:15:00

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; 
    } 
} 
相关问题