将数据从控制器超类传递到视图?

时间:2012-09-27 12:50:42

标签: asp.net-mvc

我正在编写一个Asp.net MVC应用程序(我的第一个MVC应用程序)。我需要将数据传递到_Layout视图以自定义我的页面上的页眉和页脚 - 用户是否已登录,如果他们有任何通知等._Layout页面始终需要此信息,但子页面不需要。

我应该如何将此数据传递给视图?我是否可以创建视图可以访问的LoggedInUser属性,方法与ModelViewBag相同? LoggedInUser可以由基本控制器类填充。

或者有更好的方法来实现这个吗?

2 个答案:

答案 0 :(得分:1)

检测身份验证:

User.Identity.IsAuthenticated

然后您可以使用ASP.NET MVC 3: Layouts and Sections with Razor 或/和@Html.RenderActionHtml.RenderAction and Html.Action

部分

答案 1 :(得分:1)

如果您正在使用MembershipProvider和/或RoleProvider,那么您可以指定webdeveloper来获取当前用户User.Identity.Name的身份,如果显示它的名称就是您想要的。

您也可以输入_layout来使用特定型号,但我不推荐它。有关详细信息,请参阅此questionanswer

最后,您可以在控制器上填充ViewBag属性,以获取所需的用户信息。

我想指出您可以执行部分​​视图来实现此目的,并避免_layout在每个请求上输入和填充ViewBag。