我正在从局部视图发布数据以使用 MVC@Ajax.ActionLink
方法执行更新操作,但是在包含标签
[ValidateAntiForgeryToken]
时它给了我错误。
[ValidateAntiForgeryToken]
当我从操作方法中删除标签时它工作正常。我的观点已经有了一个防伪令牌。我尝试@Html.AntiForgeryToken()
从部分视图中删除,但仍然遇到相同的错误。
_partialView.csHtml 代码:
@using (Html.BeginForm("Action", "Controller"))
{
@Html.AntiForgeryToken()
@Html.Hidden("hdnID", "", new { @id = "hdnID" })
@Ajax.ActionLink(" ", "Action", "Controller", new { ID = "Ids" },
new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "divLinkedUnlinkedVLans",
LoadingElementId = "progress"
}, new { @id = "btnRight", @class = "btn btn-default fa fa-caret-right fa-4x center" })
}
控制器代码:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Action(string ID)
{
try
{
// Some database operation
}
catch (Exception)
{
throw;
}
}
来自控制器的部分视图调用:
[HttpGet]
public ActionResult ActionName()
{
return PartialView("_partialView", Data object having data from database);
}
单击该按钮时,表单将被发回,并给出错误消息“__requestverificationtoken 不存在”。帮助我将防伪令牌发布到控制器,以避免 CSRF 攻击。