5

Web API で DateTimes をバインドするのにかなり問題があります。これが状況です。DateTime プロパティを持つモデルを返すコントローラーがあります。次のように、global.asax で IsoDateFormat と UTC 時間を使用するように Web API を設定しました。

        HttpConfiguration config = GlobalConfiguration.Configuration;
        config.Formatters.JsonFormatter.SerializerSettings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.IsoDateFormat;
        config.Formatters.JsonFormatter.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc;

日時形式は、次の形式でクライアントに返されます: 2013-02-04T11:24:48.91Z

その面ではすべてがうまく機能しています。しかし、同じ形式で投稿すると、モデル バインダーはそのプロパティを認識せず、null のままにします。デフォルトの DateTime モデルバインディングが機能するためには、入力日時はどのような形式である必要がありますか?

4

1 に答える 1

3

指定された方法で Web API サービスを構成し、指定された形式の DateTime を投稿できました。DateTime パラメータはありますか[FromBody]? プリミティブ型は[FromUri]デフォルトです。

public DateTime Post([FromBody]DateTime date)
{
    return date;
}

リクエスト:

POST http://localhost/api/values HTTP/1.1
content-type: application/json
Content-Length: 25

"2013-02-04T11:24:48.91Z"

応答:

HTTP/1.1 200 OK
Content-Length: 25
Content-Type: application/json; charset=utf-8

"2013-02-04T11:24:48.91Z"
于 2013-02-04T19:25:12.033 に答える