Я работаю над проектом, который требует разных наборов валидации для той же модели, и мы пытаемся найти лучшее решение для его обработки.Как обрабатывать проверку уровня сервиса в 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.
Есть ли какой-то лучший способ, которым мы должны обращаться с этим для корпоративного приложения? Нам еще предстоит найти решение.