在ASP.NET MVC中,将控制器用作ViewModel的构造函数中的参数是否有风险

时间:2014-02-26 07:57:40

标签: asp.net-mvc model-view-controller

在我的应用程序中,在我的所有页面上,我需要知道用户是否已登录,以及(如果是)用户名。

为方便起见,我一直包括System.Web.Mvc并将构造函数中的Controller传递给我的基类PageViewModel,以便我可以设置模型的UserIsLoggedInLoggedInUsername基于控制器。我没有在ViewModel中维护对控制器的引用,因此它仅在构造函数中使用。

这是一种常见做法吗?如果没有,您如何从控制器的上下文中填写视图模型?

1 个答案:

答案 0 :(得分:1)

要查找用户是否已登录,您无需绕过控制器。

根据您在应用中的位置,您可以使用HttpContext.Current.User来查找该内容。

特别尝试使用HttpContext.Current.User.Identity.IsAuthenticated检查他们是否已登录。

并使用HttpContext.Current.User.Identity.Name获取用户名

当你说“页面”我认为你的意思是...视图中已经有用户对象,你可以简单地说@User.Identity.IsAuthenticated@User.Identity.Name

相关问题