На той же странице у меня есть 2 формы. Один из них — простая подписка на информационный бюллетень, другой — форма оплаты Braintree «Drop-in».
Когда я отправляю форму Braintree, после отправки формы я получаю The required anti-forgery form field "__RequestVerificationToken" is not present
исключение при перезагрузке страницы относительно формы информационного бюллетеня.
Это действительно странно, учитывая, что форма рассылки работает отлично, и я не вижу причин, по которым отправка одной формы должна генерировать такое исключение в другой, особенно при перезагрузке страницы вместо POST.
Это код формы рассылки, которая содержится в PartialView:
@using (Ajax.BeginForm("SubscribeForm", "Components"))
{
@Html.AntiForgeryToken()
// other inputs omitted for brevity
}
Я визуализирую его в нижнем колонтитуле, используя @Html.Action("SubscribeForm", "Components")
. Это ComponentsController с действиями GET и POST:
public ActionResult SubscribeForm()
{
// do stuff
return PartialView("_SubscribeForm", viewModel);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SubscribeForm(SubscribeViewModel model)
{
// do stuff
}
И это исключение:
Любая идея, что может вызвать такое поведение?
@Html.Action()
будет вызывать метод POST, а не метод GET, если текущий запрос является POST. Можете ли вы показать подписи методов контроллера, включая атрибуты - person   schedule 01.12.2016public ActionResult Subscribe(SubscribeViewModel model)
и настроив форму на@using (Ajax.BeginForm("Subscribe", "Components"))
для соответствия. - person   schedule 02.12.2016@Html.Action()
- person   schedule 02.12.2016