说我有一个模特,像这样:
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);
在我的创业公司似乎没有工作。
答案 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.";
}
}
然后像我上面那样注册:)