我试图验证含有使用System.ComponentModel.DataAnnotations属性验证规则其他对象的模型,希望在默认MVC实现就足够了:支持嵌套模式和验证类与ASP.NET MVC 2.0
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阅读 - 内部-asp.net-MVC -2-模型元数据和验证。
有没有人知道这个优雅的解决方案?我试过xVal,但它们似乎使用非递归模式(http://blog.stevensanderson.com/2009/01/10/xval-a-validation-framework-for-aspnet-mvc/)。
有人必须遇到这个问题才对吗?如果您正在设计Web服务,将对象嵌套到模型中似乎并不奇怪。
ModelState.IsValid由于某种原因验证还嵌套的对象,不像TryValidateModel。混乱。 – JustAMartin 2012-10-16 11:35:57