我对这个问题有一个非常类似的问题(/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为空 . 我得到的错误如下

{“在JSON中找不到必需属性'asc' . 路径'排序',第5行,位置5.”}错误键指向“model.sort”,这很好,但来自Required属性的ErrorMessage属性似乎在做没有 .

任何人都有任何关于可能导致这种情况的建议吗?