У меня есть отдельные классы модели и модели просмотра. Классы модели просмотра выполняют только проверку уровня пользовательского интерфейса (см .: Проверка: Модель или 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 с бизнес-объектом.
Есть предложения?