Ненавязчивая проверка MVC3 без аннотаций данных - PullRequest
0 голосов
/ 29 марта 2012

Мне нужно создать HTML в MVC3 из динамического контента. Мой сценарий заключается в том, что мне нужно создать представление, которое может изменять отображаемые поля HTML в зависимости от пользователя и обстоятельств. Возможный диапазон полей неизвестен, пока мы не готовы извлечь их для использования и можем изменить. Эта базовая функциональность довольно проста в MVC. Тем не менее, я хочу использовать ненавязчивую проверку на стороне клиента, из-за которой возникает моя проблема.

Это сценарий: у меня есть список сложных типов в модели. Экземпляр сложного типа хранит метаданные о поле html, которое необходимо создать. Например, сложный тип имеет строковое свойство DataType, которое сообщает нам тип элемента html для создания. «Текст» для элемента ввода текстового поля, «флажок» для элемента ввода флажка, «Выбор» для элемента выбора и т. Д. Сложный тип имеет такие свойства, как Readonly, IsRequired, Value, Regex, MinLength, MaxLength и т. Д. Он содержит все необходимое для создания диапазона элементов HTML и проверки этих элементов.

Таким образом, список сложных типов вставляется в нашу модель в контроллере, а затем мы вызываем наше представление. Представление должно отображать соответствующий элемент html с учетом настроек в сложном типе для каждого сложного типа в списке. Это может быть достигнуто путем создания нового помощника для управления сложным типом или наличия оператора switch в цикле в представлении, которое проверяет DataType сложного типа и использует соответствующий помощник. Пока все хорошо.

Однако возникает проблема, когда мы хотим использовать проверку на стороне клиента без необходимости создавать ненавязчивые атрибуты на стороне клиента JavaScript, чего я и хотел бы достичь. Есть ли способ, которым я могу использовать существующий код MVC для создания ненавязчивой проверки на стороне клиента без использования аннотаций данных?

например. Перезаписать существующий ModelMetadataProvider DataAnnotationsModelMetadataProvider и вызвать новый метод из моего собственного помощника.

Каков наилучший способ достижения вышеуказанного сценария?

1 Ответ

0 голосов
/ 29 марта 2012

Как именно вы создаете "динамический HTML MVC3"? Вы имеете в виду, что вы просто создаете HTML, не используя фактическое представление? Поскольку проверка выполняется на стороне сервера в подшивке модели (не в html), динамический html не имеет значения. На стороне клиента, вы просто добавили бы атрибуты data- *, чтобы он работал.

Поскольку вы не указали контекст, в котором выглядит ваш HTML, мы не можем начать рассказывать вам, как выполнить то, что вы хотите.

...