我正在尝试使用 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 上阅读的那样-模型元数据和验证。
有谁知道一个优雅的解决方案?我试过 xVal,但他们似乎使用非递归模式(http://blog.stevensanderson.com/2009/01/10/xval-a-validation-framework-for-aspnet-mvc/)。
之前一定有人遇到过这个问题吧?如果您正在设计 Web 服务,那么在模型中嵌套对象似乎并不奇怪。