asp.net-mvc - 由于 [ValidateAntiForgeryToken()] 和禁用的 Cookie,提交按钮没有点击控制器
问题描述
我正在使用 @Html.AntiForgeryToken() ,但是由于此代码,当我单击提交时,它不会在控制器中执行操作。
@using (Ajax.BeginForm("Action", "COntroller",null, new AjaxOptions { OnBegin = "$('#dvLoading').removeClass('displayNone');", OnSuccess = "ShowResultUpsID(data);", OnFailure = "$('#dvLoading').addClass('displayNone'); Showerror(); scrollToTop();" }, new { @id = "CreateID", @Name = "CreateID" }))
{
@Html.AntiForgeryToken()
}
以下是我的行动
[HttpPost]
[ValidateAntiForgeryToken()]
public ActionResult MyAction(Model object)
{
}
注意:禁用 cookie。
解决方案
您需要将jquery.unobtrusive-ajax
库添加到您的项目中。它可以帮助您使用 Html Ajax 表单。
<script src="~/Scripts/jquery-3.3.1.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script type="text/javascript">
function OnSuccess(resolve) { console.log(resolve) }
function OnFailure(error) { console.log(error) }
function OnComplete(resolve) { console.log(resolve) }
</script>
@using (Ajax.BeginForm("AddUser", new AjaxOptions { HttpMethod = "POST", OnSuccess = "OnSuccess", OnComplete = "OnComplete", OnFailure = "OnFailure" }))
{
@Html.AntiForgeryToken();
@Html.HiddenFor(x => x.Id)
@Html.TextBoxFor(x => x.FirstName)
@Html.TextBoxFor(x => x.LastName)
<button>Save</button>
}
[HttpPost, ValidateAntiForgeryToken]
public ActionResult AddUser(UserModel model)
{
return Json(model, JsonRequestBehavior.AllowGet);
}
推荐阅读
- r - dplyr 和日期的意外行为
- windows - Windows 中的 Qt 应用程序部署问题
- javascript - 检测 audio.play() 何时完成
- c# - C# 应用程序打印 Excel - NPOI 打印设置以在 excel 中设置为合法的分页器大小
- scala - 在 scala 中,当插入到仅强制执行某些特征的通用函数中时,如何强制编码器对类型进行操作?
- php - 如何将 php 用户会话应用于随机报价片段?
- c# - 依赖注入错误 - 尝试激活时无法解析服务 ... 类型
- html - 为什么我的 React 应用程序布局和站点外观在我通过 github 页面部署时会发生变化,但在本地运行时看起来正常?
- phpstorm - 有没有办法在 PhpStorm 模板中定义一个 var 以便为用户获取一个组合框?
- pseudocode - 这个符号在伪代码中是什么意思?