0

我正在从局部视图发布数据以使用 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 攻击。

4

0 回答 0