注销时的ASP.NET标识JavaScript错误

时间:2016-02-24 19:46:53

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

我有一个有趣的问题。谷歌搜索后似乎没有答案。

使用稍微定制的_LoginPartial.cshtml版本,我似乎在点击退出时收到附加错误。如果有人能搞清楚,Haven没有看到这种行为并且会喜欢一些帮助。

_LoginPartial.cshtml

@if (Request.IsAuthenticated)
{

    <ul class="nav navbar-nav navbar-right" style="margin-right: 15px;">
        <li>
            @Html.ActionLink("Hello " + ViewData["FullName"] + "!", "Index",    "Manage", 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" style="margin-right: 15px;">
        <li>@Html.ActionLink("Log In", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>
    </ul>
}

错误消息 LogoutError

2 个答案:

答案 0 :(得分:1)

要完成这项工作,您应该更新表单并在其上添加BeginForm。看起来应该是这样的:

@if (Request.IsAuthenticated)
{
    using (Html.BeginForm("LogOff", "Account", new { area = "" }, FormMethod.Post, new { id = "logoutForm" }))
    {

    <ul class="nav navbar-nav navbar-right" style="margin-right: 15px;">
        <li>
            @Html.ActionLink("Hello " + ViewData["FullName"] + "!", "Index", "Manage", 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" style="margin-right: 15px;">
        <li>@Html.ActionLink("Log In", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" })</li>
    </ul>
}

答案 1 :(得分:1)

您只需要注销Logout操作。

您可以在纯HTML中添加空白表单:

<form action="Account/Logout" id="logoutForm"><form>

注销链接不必在表单内。如果你有一些css规则来搞乱你在<form>标签内的超链接。

翻译成Razor。你可以做到

    using (Html.BeginForm("LogOff", "Account", new { area = "" }, FormMethod.Post, new { id = "logoutForm" })) ...
像建议的其他答案一样。

或者只是在Html中保持简单,或者只是

<form action='@Url.Action("Logout","Account")' id="logoutForm"><form>