Web Api ModelState验证忽略了DisplayAttribute

时间:2013-01-03 15:40:36

标签: validation asp.net-web-api

给出具有这些数据注释的模型:

public class Example
{
    [Required]
    [Display(Name = "Activity response")]
    public string ActivityResponse { get; set; }
}

我希望模型状态错误消息为“活动响应字段是必需的”。相反,它是“ActivityResponse字段是必需的。”

2 个答案:

答案 0 :(得分:2)

万岁! The codeplex issue报告此错误将在Web API v5.1 Preview中修复。

答案 1 :(得分:1)

有同样的问题,我为它做了一个解决方法。 我知道这不完美。

对于每个dataannotation属性,创建一个新类

public class RequiredAttribute : System.ComponentModel.DataAnnotations.RequiredAttribute
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        validationContext.DisplayName = ModelMetadataProviders
            .Current
            .GetMetadataForProperty(null, validationContext.ObjectType, validationContext.DisplayName)
            .DisplayName;
        return base.IsValid(value, validationContext);
    }
}



public class StringLengthAttribute : System.ComponentModel.DataAnnotations.StringLengthAttribute
{
    public StringLengthAttribute(int maximumLength)
        : base(maximumLength)
    { }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
         validationContext.DisplayName = ModelMetadataProviders
             .Current
             .GetMetadataForProperty(null, validationContext.ObjectType, validationContext.DisplayName)
             .DisplayName;
         return base.IsValid(value, validationContext);
    }
}

等...