2017-10-10 50 views
1

使用下面的模型ASP.NET核心模型状态不返回数据成员名称

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

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

如果我不提供所需的参数,它返回

它正确地验证
{ 
    "Name": [ 
     "The Name field is required." 
    ], 
    "EmailAddress": [ 
     "The EmailAddress field is not a valid e-mail address." 
    ] 
} 

但是,正如您可以看到属性的外部键名称是'name'并且EmailAddress是'email_address',但我得到的是返回的属性名称。

如何获取ModelState错误以符合DataMember名称?我不想在蛇情况或骆驼情况下返回属性名称,我想使用DataMember名称。

更新

我已经在ASPNET回购提出的一个问题:https://github.com/aspnet/Mvc/issues/6942

回答

0

DataMemberAttributeDataContractSerializer使用。使用DisplayNameAttribute

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

不幸的是doen't工作,同样没有'[显示(NAME = “EMAIL_ADDRESS”)]' –

+0

尝试'[必需(的ErrorMessage = “名称字段是必需的。”)]' – aaron

+0

不幸的是,结果键仍然是字段“{”EmailAddress“:[”email_address字段是必需的“)的名称。 ]}'这并没有帮助。 api的用户应该能够根据他们首先发送的密钥找到某个字段的错误。这种模型状态的实现似乎不适合用途,所以我提出了一个关于aspnet repo的问题https://github.com/aspnet/Mvc/issues/6942 –