1

このモデル クラスは、.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 名がプロパティ名と同じで、小文字のみであるためのみ機能します。

ただし、次のように、DataMember 名とプロパティ名が異なる場合はどうなるでしょうか。

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

POST /messages/
content=foo&id=1

「コンテンツ」フィールドは Message.text にバインドできないため、バインド エラーが発生します。

DataMember 属性は、何らかの理由で無視されます。シリアル化では使用されますが、逆シリアル化では使用されません。

4

1 に答える 1

0

JSONを送信していません

これはフォームフィールドのある従来の投稿です

POST /messages/
text=foo&id=1

JSONは

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

これはあなたが探しているものについての応答ではないと確信していますが、JSONを送信していないことを理解することが重要だと思います

于 2012-09-11T15:01:15.620 に答える