Что неправильно, так это то, что действие контроллера, которое должно обрабатывать этот запрос и которое помечено [ValidateAntiForgeryToken]
, ожидает, что параметр с именем __RequestVerificationToken
будет POSTed вместе с запросом.
Нет такого параметра POSTed, как вы используете JSON.stringify(data)
, который преобразует вашу форму в ее JSON-представление, и поэтому выдается исключение.
Итак, я вижу здесь два возможных решения:
Номер 1: используйте x-www-form-urlencoded
вместо JSON
для отправки параметров запроса:
data["__RequestVerificationToken"] = $('[name=__RequestVerificationToken]').val();
data["fiscalyear"] = fiscalyear;
// ... other data if necessary
$.ajax({
url: url,
type: 'POST',
context: document.body,
data: data,
success: function() { refresh(); }
});
Номер 2: разделить запрос на два параметра:
data["fiscalyear"] = fiscalyear;
// ... other data if necessary
var token = $('[name=__RequestVerificationToken]').val();
$.ajax({
url: url,
type: 'POST',
context: document.body,
data: { __RequestVerificationToken: token, jsonRequest: JSON.stringify(data) },
success: function() { refresh(); }
});
Так что во всех случаях вам нужно POST __RequestVerificationToken
значение.