Где разместить правила управления данными для комплексной проверки данных в ASP.NET MVC? - PullRequest
3 голосов
/ 21 мая 2010

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

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

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

Спасибо.

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

Ответы [ 3 ]

4 голосов
/ 21 мая 2010

Мега Dupe. Мега Субъективный. Аргумент «где и как проверить с помощью 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:

Проверка в управляемом доменом проекте

2 голосов
/ 21 мая 2010

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

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

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

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

1 голос
/ 21 мая 2010

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

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