当DataMember名称与属性名称不同时,将传入的JSON绑定到模型

时间:2012-09-11 14:43:04

标签: .net json api binding web

我有这个模型类,它通过向.NET 4.5 Web Api控制器发送POST请求自动填充。

[Serializable]
[DataContract(Name="Message")]

public class Message {

    [DataMember(Name="text")]
    public string text {get; set;}

    [DataMember(Name="id")]
    public Guid id {get; set;}

}

现在,当我向控制器发送这样的请求时,我能够使用自动绑定模型:

POST /messages/
text=foo&id=1

不幸的是,这只能起作用,因为DataMember Names与属性名称相同,只是小写。

但是,如果我的DataMember名称和属性名称不同,例如:

[DataMember(Name="content")]
public string text { get; set; }

POST /messages/
content=foo&id=1
然后

会导致绑定错误,因为“content”字段无法绑定到Message.text

无论出于何种原因,都会忽略DataMember属性 - 如果在序列化中使用它,则在反序列化时不会使用它。

1 个答案:

答案 0 :(得分:0)

您没有发送JSON

这是一个带有表单字段的传统帖子

POST /messages/
text=foo&id=1

JSON将是

{"text":"foo","id":1}

我确信这不是对你要找的内容的回应,但我认为重要的是你明白你不是在发送JSON