2017-10-10 75 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 –