0

我有一个 ASP.NET MVC API 站点,其中我的一个模型需要 DateTime,但无论我做什么,它都不会接受我作为有效模型发送的数据!

我试过了

{"Owner":"s083151","Permissions":"public","Name":"SomeRandomMeeting","Begin":"2013-03-28T13:00:00.2124557+01:00","End":"2013-03-28T17:00:00.2124557+01:00","Url":"MyRandomUrl"}

{"Owner":"s083151","Permissions":"public","Name":"SomeRandomMeeting","Begin":Date(1364234400),"End":Date(1364248800),"Url":"MyRandomUrl"}

{"Owner":"s083151","Permissions":"public","Name":"SomeRandomMeeting","Begin":1364234400,"End":1364248800,"Url":"MyRandomUrl"}

{"Owner":"s083151","Permissions":"public","Name":"SomeRandomMeeting","Begin":"1364234400","End":"1364248800","Url":"MyRandomUrl"}

但没有一个被接受为 Model.IsValid,我做错了什么?

我使用提琴手来测试这里的请求是我的请求标头

User-Agent: Fiddler
Content-Type: application/json

数据模型

[DataContract]
public class MeetingModel
{
    [Required]
    [StringLength(500)]
    public string Owner { get; set; }

    [Required]
    public string Permissions { get; set; }

    [Required]
    [StringLength(500)]
    public string Name { get; set; }

    [Required]
    public DateTime Begin { get; set; }

    [Required]
    public DateTime End { get; set; }

    [Required]
    [StringLength(75)]
    public string Url { get; set; }

    public string MeetingId { get; set; }

    public TimeSpan Duration { get; set; }

    public List<UserModel> Hosts { get; set; }

    public List<UserModel> Participants { get; set; }
}
4

3 回答 3

3

像这样在斜线之间放置日期字段对我有用:

{"Owner":"s083151",
 "Permissions":"public",
 "Name":"SomeRandomMeeting",
 "Begin":"/Date(1364234400)/",
 "End":"/Date(1364248800)/",
 "Url":"MyRandomUrl"}

如果您使用 C# 代码生成 JSON,请小心添加 scape 反斜杠:

"\/Date(1364234400)\/"
于 2013-03-21T12:02:13.003 回答
1

似乎不是因为日期,而是因为错字:您Permissions的班级中有(复数)属性,但Permission在 JSON 中有(单数)。

至于日期格式,Scott Hanselman 有一篇关于此的帖子,从中看起来默认 JSON 模型绑定器将理解的格式看起来像“2013-03-21T00:00:00”(并且似乎是ISO的一部分8601 标准)。

于 2013-03-21T11:38:55.307 回答
1

根据http://james.newtonking.com/projects/json/help/index.html?topic=html/DatesInJSON.htm,JSON 标准是“2012-03-19T07:22Z”。你能试试吗?

编辑:刚刚在我的一些代码上尝试了 GET,我得到了“OrderTime”:“2013-03-21T12:58:15.053”。

于 2013-03-21T11:55:17.417 回答