Кнопка «Отправить» не попадает в контроллер из-за [ValidateAntiForgeryToken ()] и отключенных файлов cookie - PullRequest
0 голосов
/ 30 марта 2019

Я использую @ Html.AntiForgeryToken (), но из-за этого кода, когда я нажимаю на Submit, он не срабатывает в контроллере.

@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.

1 Ответ

0 голосов
/ 30 марта 2019

Вам необходимо добавить библиотеку 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);
}
...