mvc 6 只生成一次 antiforgerytoken

mvc 6 generates antiforgerytoken only once

我正在使用 visual studio 2015 和 aspnetcore rc2。我在每个表格中都使用 @html.antiforgerytoken() 到 post。但是 mvc 6 创建第一个并删除(或忽略,也许)其他的。我用 masterview 试过这个,没有 master,没有结果。我在想我在某处有错误,但在哪里?我清除了浏览器历史记录并创建了一个简单的空 asp.net 项目,其中包含一个视图和一个控制器,再次尝试但没有结果。

这是屏幕截图。

output 我不使用 @addtaghelper 或任何其他类似的扩展,我只使用 @html.antiforgerytoken.

Github repo aspnet/MVC 有一堆关于多个 AntiForgeryToken 调用的问题:#319, #4595, #4924. It seems that current behavior is a "effect" of previous bug. Opened #5005.

目前(从 1.0.0 RTM 开始)我们有解决方法:将生成的令牌保存到变量并多次写入此变量:

@{
    var token = Html.AntiForgeryToken();
}
<form id="form-one">
    @token
</form>
<form id="form-two">
    @token
</form>

更新: 问题 #5005 confirmed as bug, scheduled for 1.1.0 milestone.

正如我在#5005中提到的,只有当HTML和标签助手用于生成<form>元素时才会出现这种情况.

除了切换到 HTML 代,即使用更具侵入性的助手,最简单的解决方法是在 _ViewImports.cshtml 中添加以下内容:

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

@addTagHelper Microsoft.AspNetCore.Mvc.TagHelpers.RenderAtEndOfFormTagHelper, Microsoft.AspNetCore.Mvc.TagHelpers