Отображать ошибки, используя нокаут JS + MVC + Проверка на стороне сервера?

Форма Html управляется с использованием шаблонов Jock и JQuery для нокаута. Базовая проверка jQuery используется для проверки полей. Форма передается в JSON и передается в действие контроллера MVC с использованием AJAX. Действие контроллера MVC выполняет проверку на стороне сервера, добавляет ошибки в ModelState.

  • Какая наилучшая практика для возврата этих ошибок клиенту - итерация через ошибки в ModelState и добавление их в сборку/сбор значений ошибок в ответе JSON?

  • Как вы показываете ошибки на клиенте? Как вы "привязываете" коллекцию ошибок ключа/значения к соответствующим полям модели?

Скажем, что в модели есть поле "имя" с соответствующим текстовым полем, отображаемым шаблоном jQuery. Как взять ошибку для поля "имя" в коллекции ошибок и отобразить сообщение об ошибке под текстовым полем "имя" ?

Ответы

Ответ 1

Там есть два плагина проверки для ko.js(здесь), которые могут вам помочь,

Проверка нокаута

Проверка нокаута

Вы можете подключить одну из них к стороне unvstrsive, связанной с проверкой данных, на стороне клиента.

Ответ 2

Если вы используете MVC, ненавязчивый javascript выполняет проверку на стороне клиента на основе проверки, установленной в вашей модели. Вам не нужно выполнять какие-либо дополнительные настройки.

Сказав это, нет прямого способа выполнить проверку на стороне клиента на основе модели с использованием javascript и knockoutjs.

Есть несколько способов сделать это на стороне клиента.

  • JQuery или любые другие рамки проверки могут выполнять проверку. Но вам нужно иметь тег. Преимущество такого подхода заключается в том, что ваш код будет простым и простым в обслуживании.
  • Вы можете выполнить выборочную проверку клиентской стороны с помощью javascript и связать сообщения проверки с помощью нокаута. Это требует от вас создания меток ошибок для каждой входной переменной. Преимущество такого подхода заключается в том, что вы будете иметь полный контроль над тем, как и что должно отображаться.

Лично у меня было аналогичное требование в одном из последних проектов, и я достиг этого, используя специальные проверки проверки и метки ошибок.