Asp.net web api Web API-如何自定义模型验证属性的显示名称?

Asp.net web api Web API-如何自定义模型验证属性的显示名称?,asp.net-web-api,model-validation,Asp.net Web Api,Model Validation,如果我有一个ApiController,它有一个post方法,该方法使用一个具有数据注释的模型进行验证,那么我如何自定义为验证错误显示的名称?我真的不想覆盖整个错误消息,但我需要错误中的属性不是模型类型上的属性名称 我尝试过DisplayNameAttribute和DisplayAttribute等方法,但这些方法似乎不适用于此。我找到的最佳解决方案基于以下几点: 您必须创建自己的验证器提供程序(如链接中所示),以及您自己的验证器,它将使用正确的显示名称设置一个ValidationContex

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


我尝试过DisplayNameAttribute和DisplayAttribute等方法,但这些方法似乎不适用于此。

我找到的最佳解决方案基于以下几点:

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

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

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


您需要
config.Services.Replace(typeof(ModelValidatorProvider)),新的CustomDisplayNameProvider()

我找到的最佳解决方案基于以下几点:

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

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

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


您需要
config.Services.Replace(typeof(ModelValidatorProvider),new CustomDisplayNameProvider()

这是用于在客户端上显示错误的吗?您可以发布一些代码来显示当前显示的内容吗?我目前没有自定义代码,只是一个具有[Required]和[Range]属性的模型属性。它显示在.net中显示的属性名称,但我需要它在snake case中显示属性名称,因为我们的服务契约是snake case(使用json序列化程序的属性名称解析程序)。当契约是“property\u name”时,抛出类似“property name is invalid”的验证错误是很奇怪的。就是这样。这是用于在客户端上显示错误的吗?您可以发布一些代码来显示当前显示的内容吗?我目前没有自定义代码,只是一个具有[Required]和[Range]属性的模型属性。它显示在.net中显示的属性名称,但我需要它在snake case中显示属性名称,因为我们的服务契约是snake case(使用json序列化程序的属性名称解析程序)。当契约为“property_name”时抛出类似“property name is invalid”的验证错误很奇怪。就是这样。