Добавление специальной ненавязчивой проверки - PullRequest
0 голосов
/ 15 февраля 2012

У меня есть приложение MVC3, использующее EF, где одна таблица оказывается во многих моделях представлений.У него есть поле, которое обычно не требуется.Но есть одна ситуация (и одна точка зрения), где это требуется.Я хочу, чтобы и клиент, и сервер проверяли обязательность этого поля в одном месте, где оно требуется.

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

Я также не ищу атрибут проверки RequiredIf, потому что он не соответствует дизайну.Поле является обязательным только при одном обстоятельстве, и я не хочу вставлять дополнительное поле из избыточной таблицы во всех моих моделях представления, просто ради зависимости.

Все, что я хочу, - это иметь возможность включить обязательную проверку поля для одного поля в одном представлении, специальным образом, не основанным на DataAnnotations.

Способ, который сразу же подсказал мне, состоял в том, чтобы указать необходимые атрибуты data-val-* при создании разметки для поля (через объект HtmlAttributes в конце подписи HtmlHelper.TextBoxFor).Если я правильно понимаю, это должно привести к ненавязчивой проверке JS, чтобы обработать поле как требуется.

Но это ... мне кажется, слишком много взлома.Ненавязчивая поддержка валидации будет вторгаться в код более высокого уровня.Есть ли более элегантный способ сделать это?Вызов функции проверки jQuery, который я могу использовать, чтобы добиться того, что я хочу, чтобы произошло?

1 Ответ

0 голосов
/ 15 февраля 2012

Мало того, что подход data-val имеет запах кода, он также ненадежен, потому что конечный пользователь может использовать клиент, который не выполняет ненавязчивую проверку.проверка на стороне клиента - конфета, это приятно иметь.У вас всегда должна быть проверка на стороне сервера.

Эта проблема возникает, когда вы используете свою модель данных для своей модели представления.Правильный подход заключается в создании отдельных моделей представлений для каждого представления.Вы можете обойтись с помощью совместного использования моделей представлений и создания отдельных моделей представлений только для тех представлений, которые отличаются.В любом случае, если у вас есть уникальное представление, ему нужна своя уникальная модель представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...