Я пытаюсь получить ненавязчивую проверку на стороне клиента, работающую в модуле Orchard, но я столкнулся с проблемой.
В этом примере я просто пытаюсь принудительно использовать RequiredAttribute в поле текстового поля, используя Html.TextBoxFor().
Мне кажется, что пользовательский ModelValidatorProvider, реализованный Orchard (LocalizedModelValidatorProvider), предотвращает визуализацию входных атрибутов HTML5, в частности:
data-val
data-val-required
для стандартного DataAnnotations RequiredAttribute. Эти атрибуты требуются для работы jQuery.validate.unobtrusive.
LocalizedModelValidatorProvider сопоставляет RequiredAttribute с атрибутом LocalizedRequiredAttribute, поэтому, возможно, это ошибка (или нереализованная функция) в Orchard ViewEngine при рендеринге ввода текстового поля для свойства модели, украшенного атрибутом LocalizedRequiredAttribute?
Я подозреваю, что так или иначе это не происходит:
tagBuilder.MergeAttributes(htmlHelper.GetUnobtrusiveValidationAttributes(name, metadata));
(из System.Web.Mvc.Html.InputExtensions)
В настоящее время я запускаю Orchard 1.3.9.
Примечание.. Хакерное обходное решение заключается в том, чтобы удалить регистрацию LocalizedModelValidatorProvider в модуле OrchardStarter и по умолчанию вернуться к стандартному провайдеру MVC 3, хотя я заинтересован не нарушать источник Orchard, если на все возможно (не говоря уже о том, что мне могут понадобиться локализованные сообщения в какой-то момент)...