У меня есть форма ASP.NET MVC 4, в которой есть флажки для отображения и скрытия некоторых элементов HTML. При посещении страницы формы значение RequestVerificationToken создается как скрытое поле правильно. Некоторые элементы HTML по умолчанию скрыты.
Затем я устанавливаю флажок, чтобы показать некоторые элементы HTML. После того, как я снимаю флажок (который скрывает эти элементы HTML), значение RequestVerificationToken исчезает.
Поэтому, когда я отправляю форму, нажав кнопку «Создать», появляется следующая ошибка:
Отсутствует обязательное поле формы защиты от подделки "__RequestVerificationToken".
Если я не сниму флажок обратно, значение для RequestVerificationToken присутствует, и форма будет успешно отправлена.
Элементы HTML отображаются скрытыми с помощью jQuery/javascript.
Почему это происходит? Как я могу решить эту проблему? Изучение ошибки в Интернете предлагает только добавить атрибуты, как показано ниже.
Я уже добавил атрибуты в метод действия Create, но не в метод GET:
// POST: /Document/Create
[HttpPost]
[ValidateAntiForgeryToken]
...
На странице «Создать форму» я также добавил:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
...
Вот Javascript для отображения и скрытия элементов:
$('div.section .input_control').change(function () {
var $target = $(this).closest('div').find('.showSection');
if (this.checked) {
$target.show();
} else {
if (confirm("Are you sure you want to exclude this section?") == true) {
$target.hide();
jQuery(':hidden').val('');
} else {
$(this).prop("checked", true);
}
}
});