WebAPI2 JSON.NET所需属性不正确添加模型状态错误


[DataContract(Namespace="")]
public class Value
{
    [DataMember(IsRequired=true)]
    public string Id { get; set; }
    [DataMember(IsRequired=true)]
    public int Num { get; set; }
    [DataMember]
    public string Name { get; set; }
}        
public Value Post(Value value)
{
    if(!ModelState.IsValid)
    {
        //Bad request
    }
    return value;
}

我试图强制执行所有值在Web API的邮政请求中指定。在上面的值模型中,当省略NUM属性时:

 {"Id": "abc", "Name":"John"}

它为指示其缺失的模型状态添加了错误。但是,当省略ID属性时:

 {"Num" : 3, "Name" : "John"}

出乎意料的是,未添加模型状态错误,并且该模型被认为有效。

当我用JsonConvert.Deserialize手动对模型进行启用时,它在两种情况下都会引发序列化异常,表明该属性丢失了。为什么当值(INT)不正确时,而当请求正文中缺少参考类型(String)时,它似乎会添加模型状态错误?我该如何在模型状态错误中包括在内?

注意:在ID属性上放置[Required]属性是不够的。我想允许发布一个空字符串值,只要它包含在请求中。

尝试这个?

[DataMember]
[Newtonsoft.Json.JsonProperty(Required = Newtonsoft.Json.Required.AllowNull)]
public string Id { get; set; }

相关内容

  • 没有找到相关文章

最新更新