AntiForgeryToken 未通过 href link 提交表单

AntiForgeryToken not submitting on form submission via href link

代码片段...

    <div class="row">
        <div class="col-md-4">
            @* test code *@
            <form action="/Account/LogOff/" id="logoutForm" class="logoutForm" method="post">
                @Html.AntiForgeryToken()
                @*<input type="submit" value="LogOff" />*@
                <a href="javascript:document.getElementById('logoutForm').submit()">@xx.Web.Resources.AccountLogin.Logout</a>
            </form>

            @* original code *@
            @*@using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "logoutForm" }))
            {
                @Html.AntiForgeryToken()

             <a href="javascript:document.getElementById('logoutForm').submit()">@xx.Web.Resources.AccountLogin.Logout</a>
            }*@
        </div>
    </div>
</code>

//*********   controller code

        //
        // POST: /Account/LogOff
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult LogOff()
        {
            AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
            return RedirectToAction("Index", "AnonController");
        }



图片确认,令牌在生成的页面中。

所以“@*原始代码*@”来自新生成的mvc5应用程序模板。在一个全新的应用程序中,它运行良好并且您已退出。

我正在构建的应用程序已停止工作。如果我使用输入按钮提交表单,则测试代码(@* 测试代码 *@ 以上)我可以使用。如果我使用

关于什么会阻止提交表单域的任何想法? 提前致谢。

所以还是不明白这是怎么回事。

但是,以下内容修复了它。

已更改 "javascript:document.getElementById('logoutForm').submit()" 调用执行提交的本地 js 函数。

function SubmitMe() {
 $("<input />").attr("type", "hidden")
      .attr("name", "__RequestVerificationToken")
      .attr("value", $('input[name=__RequestVerificationToken]').val())
          .appendTo("#logoutForm");
$("#logoutForm").submit();

}