Все, что должно быть проверено, должно быть на вашем бизнес-уровне. Валидация - это бизнес-задача, которая не должна разбросаться по слоям и не должна быть привязана к конкретному типу приложения (веб, окна, сервис и т. Д.).
Если вы предоставляете свою модель домена приложению, вы также можете украсить свои сущности атрибутами проверки, но учтите, что если ваша модель домена изменится, то ваше приложение сломается.
Допустим, у вас есть класс AccountService
на бизнес-уровне, который имеет метод Login
. Login
принимает класс LoginInput
и возвращает класс LoginResult
:
public class LoginInput {
[Required]
public string Username { get; set; }
[Required]
public string Password { get; set; }
}
public class LoginResult {
public bool Success { get; internal set; }
public string Error { get; internal set; }
}
Оба эти класса могут использоваться в качестве ViewModel, поэтому вам не нужно создавать какие-либо ViewModel на веб-уровне, и вам определенно не следует помещать в них логику проверки.