Отправка формы MVC с использованием JavaScript и создание AntiForgeryToken

Я столкнулся со сценарием, в котором мне нужно программно отправить форму asp.net MVC с использованием JavaScript (form.Submit()), когда пользователь нажимает кнопку вне тегов формы.

Я считаю, что в этом случае ни одна из встроенных функций ASP.NET MVC не применяется. Пожалуйста, поправьте меня, если я ошибаюсь.

  1. Токен AntiForgery не проверен (который должен работать с тегом контроллера [ValidatAntiForgeryToken]).
  2. Ненавязчивая проверка не работает

Я предполагаю, что в этом сценарии действительно не так много вариантов, кроме как найти другой способ обработки CSRF. Кроме того, есть еще один способ обработки проверки на стороне клиента, когда невозможно выполнить проверку на основе аннотаций данных модели.


person Blake Rivell    schedule 10.02.2016    source источник
comment
ValidatAntiForgeryToken будет обрабатываться на стороне сервера, если указано. Он должен присутствовать в опубликованной полезной нагрузке, но form.serialize() сделает это. Ненавязчивая проверка будет пропущена, поскольку она перехватывает событие формы submit.   -  person Gone Coding    schedule 10.02.2016
comment
Итак, вы говорите, что мне не нужно беспокоиться о ValidateAntiForgeryToken, поскольку он будет отправлен при использовании AJAX и данных: $('#myForm').serialize()... Но что касается ненавязчивой проверки вместе с моделью Я в основном застрял, используя jQuery Validation, чтобы вручную проверять все, не полагаясь на аннотации ViewModel. Правильный?   -  person Blake Rivell    schedule 10.02.2016
comment
@GoneCodingGoodbye Причина, по которой я спрашиваю об этой ненавязчивой проверке, заключается в том, что я использую единую форму с подходом мастера, используя шаги jQuery. Каждый раз, когда нажимается кнопка «Продолжить», которая не является фактической кнопкой отправки, я хотел бы по-прежнему использовать ненавязчивую проверку для проверки каждого шага... Думаю, это невозможно. Интересно, почему нет возможности вручную вызвать ненавязчивую проверку.   -  person Blake Rivell    schedule 10.02.2016
comment
Ничто не мешает вам самому вызвать ненавязчивую валидацию (только что была информация, которую я больше не могу вносить в SO с работы, так что удачи в этом).   -  person Gone Coding    schedule 10.02.2016
comment
@GoneCodingGoodbye Спасибо за информацию! Я еще не нашел примеров чего-то подобного.   -  person Blake Rivell    schedule 10.02.2016
comment
@BlakeRivell, вы можете использовать ненавязчивую проверку для проверки каждого шага (и я дал вам ссылка, показывающая, как это можно сделать в одном из ваших предыдущие вопросы)   -  person    schedule 11.02.2016
comment
@StephenMuecke Я не хочу использовать другую стороннюю библиотеку проверки. Я хочу придерживаться только использования библиотек jQuery Validation и jQuery Unobtrusive Validation.   -  person Blake Rivell    schedule 11.02.2016
comment
Ссылка, которую я вам дал, не является другой сторонней библиотекой проверки. Она просто использует jquery.validate.js и jquery.validate.unobtrusive.js.   -  person    schedule 11.02.2016