2010-10-21 3 views
0

Я работаю над проектом, который требует разных наборов валидации для той же модели, и мы пытаемся найти лучшее решение для его обработки.Как обрабатывать проверку уровня сервиса в MVC3

Упрощенный пример можно с помощью нашего DTO клиентов:

public class Customer 
{ 
    [Required] 
    public string FirstName { get; set; } 

    [Required] 
    public string LastName { get; set; } 

    [Required] // Only required on some views 
    public string Title { get; set; } 
} 

В нашем первый взгляд, все поля обязательны для заполнения, так как они показаны в DataAnnotations с использованием DTO.

В нашем втором представлении может потребоваться имя FirstName и LastName, но Title является необязательным и может даже не отображаться на представлении.

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

До сих пор метод выигрыш:

  • Каждый вид имеет специальный ViewModel, которые существуют в DataAnnotations на.
  • Теперь модель просмотра отображает наши объекты домена, используя что-то вроде Automapper.
  • Объекты домена затем передаются в хранилища и службы для выполнения действий над ними.

Это также означает:

  • проверки не будет происходить в слое службы, так как к тому времени объекты получили там, они будут домен объекты вместо ViewModels.

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

ответ

0

Вы не можете скопировать всю свою проверку в одном месте, когда это зависит от контекста. Используйте свой метод выигрыша, но также и ваши службы сущностей выполните соответствующую проверку на этом уровне.