ASP.NET MVC - как избежать дублирования кода проверки в JavaScript и C # и с контекстной проверкой, которая учитывает другие значения свойств? - PullRequest
4 голосов
/ 23 февраля 2011

Как можно избежать дублирования проверяющего кода в JavaScript и C # в ASP.NET MVC 3, предпочтительно также в примере с контекстной проверкой, которая учитывает другие свойства?

Позволяет ли ASP.NET MVC 3 избежать дублирования логики валидации в C # и JavaScript, когда вам требуется индивидуальная валидация? Пример такого дублирования, о котором я говорю, см. В блоге http://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx и в комментарии, добавленном «Али 20 ноября 2009 г., 12:19», то есть оператор C # if «if (cents»). <0.99 || cents> = 0.995) {", который аналогично существует в коде JavaScript.

Все еще (с ASP.NET MVC 3) невозможно определить логику проверки только один раз? Например, я думаю, что должна быть возможность написать код C #, который определяет модель метаданных валидации, и тогда такая модель может быть использована кодом C #, а также для автоматической генерации кода JavaScript?

Если он по-прежнему не поддерживается самой платформой MVC 3, возможно, существуют ли какие-либо внешние библиотеки проверки, которые можно использовать для создания проверки JavaScript без необходимости дублировать ее?

Например, если какая-либо из фреймворков http://fluentvalidation.codeplex.com/ или http://specexpress.codeplex.com/ действительно поддерживает автоматическую генерацию кода проверки клиента, то кто-нибудь может предоставить ссылку, которая иллюстрирует, как его использовать, и поместить все части без какого-либо дублированного вручную (с C # и Javascript) кода проверки?

Было бы также интересно увидеть пример кода с контекстной проверкой, который может проверять свойство только иногда (т. Е. Без использования жестко закодированного атрибута «[Required]», как если бы свойство всегда требовалось во всех контекстах) или с другим правила проверки (в зависимости от значения какого-либо другого свойства). Например, допустим, у вас будет раскрывающийся список со странами и раскрывающийся список со штатами. Если вы выбираете такую ​​страну, в которой действительно есть штаты, тогда для валидации должно потребоваться также выбрать штат, но для других стран, в которых нет штатов, валидация не должна применяться. Как можно реализовать такую ​​проверку, которая работает как на стороне клиента, так и на стороне сервера, используя как можно меньше кода javascript, который необходимо реализовать вручную (т.е. я хотел бы создать только модель проверки C #, которая может генерировать соответствующий javascript проверка)?

1 Ответ

0 голосов
/ 21 июля 2014

Если вы используете jQuery.validate, вы можете уменьшить дублирование до одной функции - фактической проверки валидации.Вот пример того, как проверить, не совпадают ли два свойства - по сути, это пример "в зависимости от значения другого свойства", который вы ищете.

http://www.devtrends.co.uk/blog/the-complete-guide-to-validation-in-asp.net-mvc-3-part-2

...