Web API - 如何为模型验证属性设置自定义显示名称?

时间:2013-09-04 20:53:21

标签: asp.net-web-api model-validation

如果我的ApiController有一个post方法,它使用的模型有数据注释用于验证,我该如何自定义为验证错误显示的名称?我真的不想覆盖整个错误消息,但我确实需要错误中的属性不是模型类型上属性的名称。

我尝试过像DisplayNameAttribute和DisplayAttribute这样的东西,但那些似乎不适用于此。

1 个答案:

答案 0 :(得分:1)

我找到的最佳解决方案基于以下内容: https://gist.github.com/benfoster/4016852

您必须创建自己的验证器提供程序(如链接中所示)和您自己的验证程序,它将使用正确的displayName设置ValidationContext,以便

validationContext.DisplayName = displayNameMappingFunction(metadata.GetDisplayName());

然后,您需要使用GlobalConfiguration.Services全局注册验证器提供程序,或者您需要创建一个IControllerConfigurationAttribute,它将仅为一个控制器配置它。

你做config.Services.Replace(typeof(ModelValidatorProvider), new CustomDisplayNameProvider()