2011-05-05 50 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; 
    } 
} 
相關問題