我对这个问题有一个非常类似的问题(/q/4036259)。 我的模型看起来有点像这样:
SearchModel.cs
[DataContract]
public class SearchModel
{
[DataMember(Name = "sort")]
[Required(ErrorMessage = "e_sort")]
public SortModel Sort { get; set; }
[DataMember(Name = "offset")]
[Required(ErrorMessage = "e_offset")]
public int Offset { get; set; }
[DataMember(Name = "limit")]
[Required(ErrorMessage = "e_limit")]
public int Limit { get; set; }
[DataMember(Name = "query")]
[Required(ErrorMessage = "e_query")]
public string Query { get; set; }
}
SortModel.cs
[DataContract]
public class SortModel
{
[DataMember(Name = "type")]
[Required(ErrorMessage = "e_sort_type")]
public string Type { get; set; }
[DataMember(Name = "asc")]
[Required(ErrorMessage = "e_sort_asc")]
public bool Asc { get; set; }
}
当我发送这样的东西时:
{
"sort" : {
"type" : "rank"
},
"offset" : 0,
"limit" : 10,
"query" : "stackoverflow"
}
我的ModelState中出现验证错误,这是正确的行为,但ErrorMessage为空。我得到的错误如下
{"必需的财产' asc'在JSON中找不到。路径'排序',第5行,第5位。"}
错误关键点指向" model.sort"这很好,但是必需属性的ErrorMessage属性似乎什么也没做。
任何人都有任何关于可能造成这种情况的建议吗?