Где разместить правила управления данными для комплексной проверки данных в ASP.NET MVC?

В настоящее время я работаю над проектом ASP.NET MVC2. Я впервые работаю над настоящим веб-приложением MVC. Веб- сайт ASP.NET MVC действительно помог мне начать работу очень быстро, но у меня все еще есть некоторые неясные знания, касающиеся проверки моделей данных.

Моя проблема в том, что я не знаю, где управлять моей заполненной моделью данных, когда речь идет о сложных правилах проверки. Например, проверка строкового поля с помощью Regex довольно проста, и я знаю, что мне просто нужно украсить свое поле определенным атрибутом, чтобы в модели были реализованы правила управления данными. Но если у меня есть несколько полей, которые мне нужны для проверки, какие друг друга, например, несколько дат и времени, которые должны быть правильно установлены в соответствии с определенным правилом времени, где мне нужно проверять их? Я знаю, что могу создать свои собственные атрибуты проверки, но иногда проверка запрашивает конкретный путь проверки, который является сложным, чтобы быть проверенным с использованием атрибутов.

Этот первый вопрос также приводит меня к связанному вопросу, который является правильным, чтобы проверить модель в контроллере? Потому что на данный момент это единственный способ, который я нашел для комплексной проверки. Но я нахожу это немного грязным и чувствую, что он не совсем подходит для роли контроллера и намного сложнее для тестирования (множественный путь кода).

Благодарю.

NB: У меня есть несколько довольно хороших решений, но я жду других идей и решения "наилучшей практики".

3 ответа

Решение

Мега дупе. Мега Субъективный. Аргумент "где и как проверить с помощью MVC" был забит до смерти, не придя к прямому ответу. Это настолько субъективно и философски для каждого разработчика / магазина, что для всех почти невозможно договориться о чем-либо.

Другая проблема заключается даже в том, что инструменты проверки имеют множество форм и размеров и могут функционировать в разных областях и слоях. Его почти безумное разнообразие в инструментах проверки. Как, если ( someString!= "") Стало так сложно?;)

Если вы прочитаете эти другие ответы, вы быстро обнаружите, что лучшей практики нет вообще. Как только вы познакомитесь с принципами доменного управления, и обсуждение недопустимого состояния и объектов станет еще более сложным.

Где вы делаете свою проверку? модель, контроллер или вид

Проверка ASP.NET MVC 2 с использованием DTO вместо доменных сущностей

Нужно ли больше проверять ASP.Net MVC 2 с точки зрения шаблонов и использования?

Сопоставление атрибутов проверки с сущности домена в DTO

Какая библиотека проверки для ASP.NET MVC?

ASP.NET MVC - Пользовательский ввод и сервис / Репозиторий - Где проводить валидацию?

ASP.NET MVC: достаточно ли проверки аннотаций данных?

MVC - где реализовать проверку формы (на стороне сервера)?

Проверка Asp.Net MVC

DDD:

Валидация в доменном дизайне

Мое личное мнение будет состоять в том, чтобы поддерживать вид как можно более чистым и пытаться заставить вид только отображать данные (сохраняя вид как можно тупее).

Конечно, вы можете сделать несколько простых проверок в представлении, таких как Required, Regex rules и так далее.

Сложные бизнес-правила должны находиться внутри бизнес-объекта или некоторого уровня бизнес-логики.

Что я делаю в своих MVC-проектах, так это заставляю модель вызывать такой метод, как Validate(), который проверяет конечный уровень проверки, такой как бизнес-правила и т. Д., А затем я могу вызывать Save();

Когда у вас есть заполненный класс, который готов к проверке, просто передайте его в класс проверки в контроллере.

Другие вопросы по тегам