ASP.NET Web Api 2 - 更改站点范围内模型的默认验证消息

时间:2016-06-27 21:05:48

标签: c# asp.net validation asp.net-web-api asp.net-web-api2

说我有一个模特,像这样:

class Model
{
    [Required]
    public string Name { get; set; }
}

有没有办法让它成为错误信息而不是:

  

名称字段是必需的。

我可以将其更改为:

  

名称是必需的。

我希望这样做而不会创建自己的属性,也不会在我的所有属性中添加ErrorMessage = x

在搜索时,我发现了一些似乎适用于MVC2的东西,但没有特定的web api。我创建了一个属性适配器:

public class CustomRequiredAttributeAdapter : DataAnnotationsModelValidator< RequiredAttribute>
{
    public CustomRequiredAttributeAdapter(ModelMetadata metadata, ModelBindingExecutionContext context, RequiredAttribute attribute)
    : base(metadata, context, attribute)
    {
        attribute.ErrorMessage = "{0} is required.";
    }
}

但是这样注册:

var validatorProvider = new DataAnnotationsModelValidatorProvider();
validatorProvider.RegisterAdapter(typeof(RequiredAttribute), typeof(CustomRequiredAttributeAdapter));       
webApiConfig.Services.Replace(typeof(System.Web.Http.Validation.ModelValidatorProvider), validatorProvider);

在我的创业公司似乎没有工作。

1 个答案:

答案 0 :(得分:1)

想出我正在实施错误类型的DataAnnotationsModelValidator

我应该使用System.Web.Http.Validation.Validators命名空间中的那个。像这样:

public class CustomRequiredAttributeAdapter : DataAnnotationsModelValidator
{
    public CustomRequiredAttributeAdapter(IEnumerable<ModelValidatorProvider> validatorProviders, ValidationAttribute attribute)
    : base(validatorProviders, attribute)
    {
        attribute.ErrorMessage = "{0} is required.";
    }
}

然后像我上面那样注册:)