如何在Asp.net MVC 5中从控制器操作视图中的菜单?

时间:2016-04-28 08:09:52

标签: kendo-ui asp.net-mvc-5 kendo-asp.net-mvc

我的问题的主旨是更改我的网站菜单以显示登录用户和一个登出按钮,从一开始就有一个登录按钮。 我是MVC的新手,可能会发生这种错误。这是我想改变的菜单,你会看到我的想法。在表单中,我可以从后面的代码轻松访问它,并使两个菜单选项之一不可见。

<ul id="menu">
                        <li>@Html.ActionLink("Home", "Index", "Home")</li>
                        <li>@Html.ActionLink("Members", "About", "Home")</li>
                        <li>@Html.ActionLink("Schedule", "Contact", "Home")</li>
                        <li id="loginLink">@Html.ActionLink("Login", "Login", "Account")</li>
                        <li id="logoutLink">@Html.ActionLink("(" + Session["userName"].ToString() + ")" + "Logout", "Logout", "Account")</li>
                    </ul>

1 个答案:

答案 0 :(得分:0)

为什么要从控制器进行View操作?我相信View特定逻辑应该位于View本身。

如果您已对用户进行身份验证并设置身份验证Cookie,则可以在视图中执行以下操作:

<ul id="menu">
  <li>@Html.ActionLink("Home", "Index", "Home")</li>
  <li>@Html.ActionLink("Members", "About", "Home")</li>
  <li>@Html.ActionLink("Schedule", "Contact", "Home")</li>
  @if (User.Identity.IsAuthenticated)
  {
      <li id="LogoutLink">@Html.ActionLink(User.Identity.Name + "Log Out", "Logout", "Account")</li>
  }
  else
  {
      <li id="loginLink">@Html.ActionLink("Login", "Login", "Account")</li>
  }
</ul>

如果不确切知道如何对用户进行身份验证,我无法确定此解决方案是否符合您的需求。

如果用户经过身份验证,此示例将返回LogoutLink列表项,否则,如果用户未经过身份验证,它将返回LoginLink列表项。

如果您对使用ASP.NET身份库进行身份验证感兴趣,here是一个包含一些精彩示例的博客,这对我帮助很大。