【问题标题】:ASP.NET Core model state does not return DataMember nameASP.NET Core 模型状态不返回 DataMember 名称
【发布时间】:2018-03-22 09:12:53
【问题描述】:

使用以下模型时

[DataContract]
public class MyModel 
{
    [DataMember(Name = "name")]
    [Required]
    public string Name { get; set; }

    [DataMember(Name = "email_address")]
    [Required]
    [EmailAddress]
    public string EmailAddress { get; set; }
}

当我在控制器操作中使用 ModelState 时,如果我不提供它返回的所需参数,它会正确验证

{
    "Name": [
        "The Name field is required."
    ],
    "EmailAddress": [
        "The EmailAddress field is not a valid e-mail address."
    ]
}

但是,您可以看到属性 Name 的外部键是“name”,EmailAddress 是“email_address”,但我得到的是返回的属性名称。

如何让 ModelState 错误与 DataMember 名称一致?我不想在蛇形或骆驼形中返回属性名称,我想使用 DataMember 名称。

更新

我在 aspnet repo 上提出了一个问题:https://github.com/aspnet/Mvc/issues/6942

【问题讨论】:

    标签: asp.net-mvc validation asp.net-core modelstate


    【解决方案1】:

    DataMemberAttributeDataContractSerializer 使用。使用DisplayNameAttribute

    [DataMember(Name = "email_address")]
    [DisplayName("email_address")]
    [Required]
    [EmailAddress]
    public string EmailAddress { get; set; }
    

    【讨论】:

    • 不幸的是这不起作用,[Display(Name = "email_address")]也不起作用
    • 试试[Required(ErrorMessage = "The name field is required.")]
    • 不幸的是,结果键仍然是字段名称{ "EmailAddress": [ "The email_address field is required." ] },所以这没有帮助。 api 的使用者应该能够根据他们首先发送的密钥找到字段的错误。这种模型状态的实现似乎不适合目的,所以我在 aspnet repo github.com/aspnet/Mvc/issues/6942 上提出了一个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-25
    • 2017-07-10
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 2016-05-07
    相关资源
    最近更新 更多