Web API 2补丁Delta <t>没有反序列化Timespan属性

时间:2015-06-15 10:50:45

标签: odata asp.net-web-api2

我想使用Patch with Delta来更新具有Timespan属性的对象 我没有任何错误,但Timespan属性都是0:00:00,我认为它们被简单地忽略了。

当控制器中的方法停在断点处时,我可以在timespan属性中看到0。我不会在那个阶段对数据做任何改变。 我肯定不会从客户端发送空的时间跨度

{"TevID":2,"TevName":"this is the name","TotalTime":"01:03:00","FreeTime":"02:30:00"}

[HttpPatch]
public async Task<IHttpActionResult> Patch(int id, Delta<TTevekenyseg> modified) {
Log.Info("Update-ID: {0}", id);
...
}

如果Delta适用于Timespans,您有任何信息吗?

1 个答案:

答案 0 :(得分:0)

德尔塔&LT; T&GT;不适用于TimeSpans。这是一个非常有缺陷的课程,所以我写了自己的名为Patchable&lt; T&gt;。我发现的主要问题是Delta&lt; T&gt;与JSON.Net的不兼容性。它缺乏对TimeSpan的支持,这证实了我做对了。

请参阅the answer to this question(很长时间抱歉)

答案是TrySetInt32。 TrySetTimeSpan的等效方法非常有效。