Я пытаюсь проверить модель, содержащую другие объекты с правилами проверки, используя атрибуты System.ComponentModel.DataAnnotations, надеясь, что реализации MVC по умолчанию будет достаточно:
var obj = js.Deserialize(json, objectInfo.ObjectType);
if(!TryValidateModel(obj))
{
// Handle failed model validation.
}
Объект состоит из примитивных типовно также содержит другие классы, которые также используют DataAnnotications.Вот так:
public class Entry
{
[Required]
public Person Subscriber { get; set; }
[Required]
public String Company { get; set; }
}
public class Person
{
public String FirstName { get; set;}
[Required]
public String Surname { get; set; }
}
Проблема в том, что проверка ASP.NET MVC опускается только на 1 уровень и оценивает только свойства класса верхнего уровня, что можно прочитать на digitallycreated.net/Blog/54./deep-inside-asp.net-mvc-2-model-metadata-and-validation.
Кто-нибудь знает элегантное решение этой проблемы?Я пробовал xVal, но они, кажется, используют нерекурсивный шаблон (http://blog.stevensanderson.com/2009/01/10/xval-a-validation-framework-for-aspnet-mvc/).
Кто-то, должно быть, столкнулся с этой проблемой раньше, чем правильно? Вложение объектов в вашей модели не кажется таким странным, если выперепроектирую веб-сервис.