ASP.NET 5 个添加了防伪令牌的 vNext 表单

ASP.NET 5 vNext Forms Having Anti Forgery Tokens Added

我遇到了一个简单的 form 标签添加了 actionmethod 属性的问题。还添加了一些隐藏的输入字段,我猜是防伪的。

这是我在 Razor 视图中添加的 html:

<form>test</form>

这是正在渲染的内容:

<form action="/company/adduser" method="post" class="ng-pristine ng-valid">
    test
    <input name="__RequestVerificationToken" type="hidden" value="CfDJ8KMbFT4ebnROrEREXkL-MYlPSgL0ISe6_sqTJXc982ocoWgKH1v_yCV2_5Qa9h8AmVFaNk0i0Wpa6gQlhWY-PHkZ929_Tkv1B-lCR7-aLyd53L2448CLQNtakb-UHQmLgPGCiQF0dj4jij9lc_sS7jRPjcGFnNjxdT_wobz-CsU3NvR-fm-a9r0MnqhflgwLLw">
</form>

它导致了重大问题,因为我只使用 asp.net MVC 来提供 HTML 并在客户端上使用 AngularJS。 action 方法在尝试使用 ng-submit.

时导致 angular 出现问题

有谁知道:

  1. MVC 是否以某种方式自动添加防伪标记?
  2. 如何禁用它?

这里的问题是 Microsoft 添加了新的 TagHelpers,其中之一是 <form>。它似乎正在添加所有额外的 "stuff".

编辑并更好地修复:

我最终将 TagHelpers 配置为具有前缀。在我的 _GlobalImport.cshtml 中,我添加了:

@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers"
@tagHelperPrefix "asp:"

这让我可以在我确实想要呈现的任何 TagHelper 前面添加 "asp:"。这也阻止了 <form> 标签被 TagHelper 呈现。

Microsoft ASP.NET 团队的达米安·爱德华兹 (Damien Edwards) 通知我,表单标签的问题是一个错误,将得到修复。我仍然认为此信息在此期间会有帮助。

您还可以通过在前面添加 ! 来阻止 TagHelper 呈现,如下所示:<!form></!form>

截至撰写本文时,这只是表单标签助手中的一个错误。会修复的。

您可以通过添加 !如 <!form></!form>