【问题标题】:Can the CamelCase Property Names in Model Validation error messages be fixed?模型验证错误消息中的 CamelCase 属性名称可以修复吗?
【发布时间】:2018-07-17 09:21:09
【问题描述】:

我有一个 Asp.net Core REST 服务。拿一个模型sn-p:

{
   public string ItemType { get; set; }
}

这遵循 C# 命名约定,自然,在 JSON 中,我们将其命名为“itemType”。我已经通过将内部 Json.net 设置为使用骆驼大小写名称解析器来修复该部分。所以这一切都很好。

但是,如果模型验证失败,我会收到一条错误消息:

"**itemType**":[
    "The **ItemType** field is required."
]

是的,它很挑剔:),但是有什么通用的方法可以让错误消息中的名称也用驼峰命名,以便它们与字段名称匹配?

【问题讨论】:

  • 我还没有完成 Core,并且我认为它可能在旧的 ASP.NET 中工作,但尝试将 [Description] 属性放在带有“用户友好”的名称。我认为如果有的话,它曾经使用过。
  • ASP.NET Core MVC 的正确标签是asp.net-core-mvc,而不是asp.net-mvc

标签: c# validation asp.net-core asp.net-core-mvc


【解决方案1】:

请查看我的回答中与您的问题相关的第二部分。

https://stackoverflow.com/a/51371894/2514158

主要思想是在骆驼案例配置之外创建自定义模型验证。

【讨论】:

    【解决方案2】:

    在 startup.cs 文件中可以设置 json formatter case。默认情况下它应该是骆驼案例,但它似乎不会影响模型验证。在 ConfigureServices 方法下添加:

    public void ConfigureServices(IServiceCollection services)
    {
       services.AddMvcCore().AddJsonFormatters(j => j.ContractResolver = new CamelCasePropertyNamesContractResolver());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多