2010-09-01 2 views
0

ОК, так что, возможно, мне что-то здесь не хватает, но как это сложно сделать с эффективным сервером & проверка на стороне клиента в MVC (2) ? Вот несколько примеров:Проверка ASP.NET MVC 2 для переменных длины или динамических представлений данных и просмотр моделей

  1. Я хочу использовать список переменных длин. Я следую великолепному руководству, например, обзору переменных длины Стива Сандерсона. Я хочу создать специальный валидатор, например «RequiredIf». Мой список переменных длины - это сборник (с помощью помощника HTML Sanderson для коллекций), и пользовательские валидаторы не срабатывают даже с правильными сценариями проверки клиента на месте (которые отлично работают для списков длины без переменной). . не является ли список переменной длины, который должен быть отправлен назад как перечислимая коллекция в действие [HttpPost] довольно распространенным? Почему эта проверка настолько болезненна на стороне клиента - когда вы хотите извлечь из аннотации проверки, которая была связана с вашим классом? В этом случае проверка на стороне сервера фактически работает ... но клиентская сторона кажется невозможной при использовании коллекции и списка переменной длины. Конечно, это может быть связано с идентификацией идентификатора элемента HTML из указателя-гида коллекции, но он начинает настолько запутываться ...

  2. У меня есть ViewModel, который может быть заполнен различными типами данных , Я хочу проверить в некоторых случаях, но не в других. Обычно я заполняю свой ViewModel из класса домена, у которого уже есть аннотации данных для проверки. Однако ViewModel потребует собственных аннотаций данных для правильной проверки правильности. Для некоторых полей я хочу проверить, но для других целей использования одного и того же поля - при заполнении разными данными - я не хочу проверки. Я не могу ссылаться на динамическое свойство в аннотации проверки данных, хотя ... аннотации статичны. Это должно быть основано на том, когда они связываются и т. Д. Конечно, я могу создать собственный валидатор, который становится ДЕЙСТВИТЕЛЬНО сумасшедшим и фактически ссылается на литеральные значения других полей в его попытке решить, следует ли проверять (рисовать в булевых словах для «требуемых» и строк для «регулярных выражений» или «ошибок») ... но ох! Серьезно, это так сложно ?!

Что такое разочарование в том, что чем больше я стараюсь следовать модели, предоставляемые MVC, я постоянно натыкаясь на вещи, которые могут быть так штопать простой, но получить так больно, когда вы не можете отойти от шаблона. Если аннотация для проверки достоверности данных является правильным подходом, действительно кажется, что она должна поддерживать динамически заданные свойства и иметь лучший автоматический рендеринг клиента JS (специально для пользовательских валидаторов), чтобы избежать этих головных болей. Я почти готов сделать работу по проверке на стороне клиента в этих ситуациях.

Кто-нибудь использовал пакет проверки, который облегчает этот процесс? Я недостаточно осведомлен о поддержке совместимых с MVC 2 пакетов проверки, чтобы узнать, стоят ли они. Например, я проверил Fluent Validation, но вам нужно больше узнать. Позволяет ли динамическое присвоение валидации и клиентское valdiation для пользовательских валидаторов?

Одна из идей, которую я рассматриваю, - это просто добавить поля данных в моей модели домена, которые предоставляют строку, пригодную для просмотра, которая может использоваться для проверки и использования пакета, такого как проверка JQuery, и избегать этой ситуации, упомянутой выше. Таким образом, моя модель домена может использовать аннотации для защиты своей целостности данных (и будет служить последней остановкой для любой проблемы с вставкой), и моя клиентская сторона может просто добавить строку для атрибута класса для скриптового валидатора для использования без чтобы пройти через сумасшествие выставлять пользовательские валидаторы на стороне клиента с кучей переполнения/интерпретации «IEnumerable GetClientValidationRules() ...»

Что дает? Есть ли способ лучше?

ответ

0

Вы всегда присоединять/удалить атрибуты во время выполнения:

DataAnnotations dynamically attaching attributes

+0

Это не распространяется на вопросы проверки на стороне клиента на всех, хотя. Я рассмотрю его ... MVC 3 может пообещать, http://weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspx - - Кто-нибудь пробовал это? –

Смежные вопросы