如何根据身份验证显示不同的视图? asp.net mvc

时间:2013-03-16 19:56:49

标签: c# asp.net asp.net-mvc asp.net-mvc-4

例如,当用户访问索引页面时,他看到的内容与登录用户看到的内容不同。

我如何实现这一点,这需要某种注释还是其他什么?

3 个答案:

答案 0 :(得分:1)

您是否尝试过_Layout视图或部分视图?

答案 1 :(得分:1)

处理此问题的方法不止一种......

如果您想在控制器中处理它或查看它由你决定。 理想情况下,我会冒险猜测选择取决于你想要显示或不显示的情况。

如果你在控制器中处理它......

Function Index()As ActionResult
  If Request.IsAuthenticated Then
    ' Logged in is TRUE
    Return View(LoggedInUserContentModel)
  Else
    ' Logged in is FALSE
    Return View(SiteGuestUserContentModel)
  End If
End Function

如果你在视图中处理.... 直接显示页面内容

<% If Request.IsAuthenticated Then %>
  <!-- User is Logged In -->
  Welcome <b><%: Page.User.Identity.Name %></b>!
  [ <%: Html.ActionLink("Log Off", "LogOff", "Account")%> ]
<% Else %>
  <!-- User is NOT Logged In -->
  Welcome <b>Guest</b> please login!
  [ <%: Html.ActionLink("Log On", "LogOn", "Account")%> ]
<% End If %>

您可以选择不直接显示页面上嵌入的内容,但可以选择显示从ChildAction中检索的内容 (这类似于使用旧的非MVC风格的网页设计在UserControl中显示它,而不是直接将内容放在网页上)

答案 2 :(得分:1)

处理它的一种简单方法是在控制器方法中使用RedirectToAction。

Function Index() As ActionResult
    If User.Identity.IsAuthenticated Then
        Return RedirectToAction("Index", "AuthenticatedController")
    Else
        Return View()
    End If
End Function