![](/img/trans.png)
[英]Class/Model Level Validation (as opposed to Property Level)? (ASP.NET MVC 2.0)
[英]Support for nested model and class validation with ASP.NET MVC 2.0
我正在嘗試使用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-元數據和驗證。
有誰知道這個優雅的解決方案? 我嘗試過xVal,但它們似乎使用了非遞歸模式( http://blog.stevensanderson.com/2009/01/10/xval-a-validation-framework-for-aspnet-mvc/ )。
有人必須在此之前遇到這個問題嗎? 如果您正在設計Web服務,那么在模型中嵌套對象似乎並不那么奇怪。
我建議從codeplex查看Fluent驗證。 驗證規則包含在一個單獨的類中(類似於NHibernate和Fluent NHibernate的工作方式)。 一個使用lambda指定要驗證的屬性,支持子屬性。
`
public class MaintainCompanyViewModelValidator : AbstractValidator<MaintainCompanyViewModel>
{
public MaintainCompanyViewModelValidator()
{
RuleFor(model => model.Company.ShortName)
.NotEmpty();
}
`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.