Лучшие практики проверки для модели и ViewModel

У меня есть отдельные классы модели и модели просмотра. Классы модели просмотра выполняют только проверку уровня пользовательского интерфейса (см .: Проверка: Модель или ViewModel ).

Я могу проверить действие post в контроллере, что модель (vewmodel) действительна.

Вопрос: Как мне проверить модель (основной объект с аннотациями данных).

Я не разрабатываю модель представления с использованием объекта модели. Просто дублируйте свойства и добавив все свойства, которые, возможно, требуются в этом конкретном представлении.

//Model Class
public class User
{
    [Required]
    public string Email {get; set;}

    [Required]
    public DateTime Created {get; set;}
}

//ViewModel Class
public class UserViewModel
{
    [Required]
    public string Email {get; set;}

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

//Post action
public ActionResult(UserViewModel uvm)
{
    if( ModelState.IsValid)
        //means user entered data correctly and is validated

    User u = new User() {Email = uvm.Email, Created = DateTime.Now};
    //How do I validate "u"?

    return View();
}

Должно получиться что-то вроде этого:

var results = new List();
var context = new ValidationContext(u, null, null);
var r = Validator.TryValidateObject(u, context, results);

Я думаю о добавлении этого метода проверки в базовый класс (бизнес-объекта) и проверка его, когда Я сопоставляю класс viewmodel с бизнес-объектом.

Есть предложения?

13
задан Community 23 May 2017 в 11:47
поделиться