Как можно избежать дублирования проверяющего кода в 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 проверка)?