Asp.net core mvc ValidateAntiForgeryToken断开页面
我有一个ASP.NETCore1.1MVCWeb应用程序。当我将[ValidateAntiForgeryToken]装饰添加到编辑/删除/创建控制器时,页面不会加载( HTTP 400错误)。你知道为什么吗?我在某个地方读到,我必须在我的视图中添加一个相应的@HtmlHelper.AntiForgeryToken,或者类似的东西?但不知道放在哪里。。。然而,我也读到过,在ASP.Net核心中不需要做任何事情 以下是“用户”控制器的编辑视图示例:Asp.net core mvc ValidateAntiForgeryToken断开页面,asp.net-core-mvc,antiforgerytoken,asp.net-core-1.1,Asp.net Core Mvc,Antiforgerytoken,Asp.net Core 1.1,我有一个ASP.NETCore1.1MVCWeb应用程序。当我将[ValidateAntiForgeryToken]装饰添加到编辑/删除/创建控制器时,页面不会加载( HTTP 400错误)。你知道为什么吗?我在某个地方读到,我必须在我的视图中添加一个相应的@HtmlHelper.AntiForgeryToken,或者类似的东西?但不知道放在哪里。。。然而,我也读到过,在ASP.Net核心中不需要做任何事情 以下是“用户”控制器的编辑视图示例: @model InspectionsData.Mo
@model InspectionsData.Models.User
@{
ViewData["Title"] = "Edit";
}
<h2>Edit</h2>
<form asp-action="Edit">
<div class="form-horizontal">
<h4>User</h4>
<hr />
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group" hidden>
<label asp-for="UserId" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="UserId" class="form-control" />
<span asp-validation-for="UserId" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label asp-for="FirstName" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="FirstName" class="form-control" />
<span asp-validation-for="FirstName" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label asp-for="LastName" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="LastName" class="form-control" />
<span asp-validation-for="LastName" class="text-danger"></span>
</div>
</div>
</div>
</form>
<div>
<a asp-action="Index">Back to List</a>
</div>
@model-InspectionsData.Models.User
@{
ViewData[“标题”]=“编辑”;
}
编辑
使用者
返回列表
谢谢您需要将表单声明更改为以下内容
<form asp-controller="User"
asp-action="Edit" method="post" asp-antiforgery="true">
正如您所提到的,asp antiforgery=“true”
可能是可选的,但我喜欢总是添加它,以确保我显示出我的意图。我每次都这样
希望这有帮助。是的,你是对的。您不再需要在ASP.NET Core中手动放置AntiForgeryToken
表单
标记帮助程序生成一个隐藏的请求验证令牌,用于
防止跨站点请求伪造(与
HTTP Post操作方法中的[ValidateAntiForgeryToken]属性
取自ASP.NET核心
话虽如此,您确定您的操作符合POST
请求吗
另外,指定控制器也是一个好主意
<form asp-controller="Users" asp-action="Edit">
附言:为您的操作方法添加代码将有助于更快地解决问题。您将属性放在了哪里?因为如果你把它放在返回表单的动作上,你会得到错误。它必须位于表单POST触发的操作上。您能将控制器代码添加到问题中吗?