У меня есть отдельные модели и классы viewmodel. Если классы viewmodel проверяют только уровень UI (см. Validation: Model или ViewModel).
Я могу проверить действие post в контроллере, что модель (vewmodel) действительна.
Спросите: Как проверить модель (основной объект с аннотациями данных).
Я не разрабатываю viewmodel с использованием объекта модели. Просто дублируйте свойства и добавьте все свойства, которые могут потребоваться в этом конкретном представлении.
//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<ValidationResult>();
var context = new ValidationContext(u, null, null);
var r = Validator.TryValidateObject(u, context, results);
То, что я думаю, заключается в добавлении этой техники валидации в базовый класс (бизнес-объекта) и ее проверки при сопоставлении из класса viewmodel в бизнес-объект.
Любые предложения?