簡體   English   中英

使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM