MVC5注销链接从不同区域失败

时间:2014-11-18 12:01:18

标签: asp.net-mvc asp.net-mvc-5 asp.net-identity asp.net-mvc-areas

我有一个MVC5应用程序,有许多不同的领域。该项目是使用导航栏中的“注销”链接创建的,但如果用户位于任何“区域”中,则链接将断开。我想补充一下:

new { area = "" }

会将链接指向正确的位置,但要么它没有,要么我在错误的地方尝试过。代码如下:

    @using Microsoft.AspNet.Identity
    @if (Request.IsAuthenticated)
    {
        using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id =  "logoutForm", @class = "navbar-right" }))
        {
            @Html.AntiForgeryToken()

            <ul class="nav navbar-nav navbar-right">
              <li>
                 @Html.ActionLink("Hello " + User.Identity.GetUserName(), "Manage", "Account", routeValues: null, htmlAttributes: new { title = "Manage" })
              </li>
              <li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li>
            </ul>
        }
     }
     else
     {
        <ul class="nav navbar-nav navbar-right">
            <li>@Html.ActionLink("Log in", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>
        </ul>
     }

有关需要更改哪些内容的想法,无论用户当前所处的区域如何,都可以使用“注销”工作?

1 个答案:

答案 0 :(得分:14)

正确的位置在Html.BeginForm(...)参数范围内:

using (Html.BeginForm("LogOff", "Account", new { area = "" }, FormMethod.Post, new { id =  "logoutForm", @class = "navbar-right" }))