Я использую asp.net mvc 3 с ненавязчивой проверкой jquery.Недавно я перешел со стандартных DataAnnotations на FluentValidation, и он прекрасно работает.
Моей основной причиной выбора FluentValidation была необходимость проверки вложенных свойств моей модели представления (но я обнаружил, что есть и другие интересные причины для ее использования), чтовроде как (не обращайте внимания на аксессоры, это псевдо):
class Vm {
string Prop;
string AnotherProp;
IEnumerable<ElementsVm> Elements;
}
class ElementsVm {
bool Required;
string Id;
string Title;
string Value;
}
Используя FluentValidation, я делаю валидатор для Vm и ElementVm, и мои модульные тесты зеленые, показывая, что проверка на стороне сервера работает.
Клиентская сторона, «Prop» и «AnotherProp» работает - мои правила проверки также работают на клиентской стороне, как и ожидалось (как это было бы с DataAnnontation), но все мои элементы не получают никакой проверки на стороне клиентавообще - я проверяю dom и вижу, что все атрибуты data-val, data-required и т. д. отсутствуют.
Я пробовал разные подходы к генерации html в моих представлениях, но «Prop»и «AnotherProp» генерируются с использованием Html.TextBoxFor (m => m.Prop), в то время как мои элементыОн порожден частично - вот с чего начинаются проблемы.Если я выберу Html.TextBoxFor (m => m.Value), все мои текстовые поля элемента будут иметь одинаковое имя / идентификатор, поэтому я также попытался использовать Html.TextBox (Model.Id) для генерации уникального идентификатора / имени, но все еще без свойств проверки..
Итак, есть ли способ заставить мой senario работать - я не против немного переписать его, но я бы очень хотел, чтобы FluentValidation написал мой html для меня.
Мое аварийное решениебыло бы сделать мои собственные помощники HTML для создания правильного HTML с атрибутами, но я думаю, что это будет отстой, так как мне пришлось бы постоянно обновлять эти помощники, когда новые выпуски / исправления были сделаны либо для FluentValidation, проверки JQuery или ссылки в mvcмежду двумя.