当我通过GET请求从AngularJS向我的WebApi控制器发出JSON调用时,我的日期会以“本地”类型的形式进入我的模型。这很好,我希望它如何工作。
但是,当我将方法更改为POST(在WebApi控制器和我的AngularJS客户端代码上)时,日期是一小时,因为DateTime类型现在是UTC。在发送之前,日期通过.toJSON()序列化,并且在查看GET和POST请求时,通过Chrome的网络检查,所有内容看起来都相同。
如何在POST和GET请求中保持DateTime Kind的一致性,以便它们始终是本地的?
编辑#1:
Angular JS Call:
var params = {
DateFrom: detail.from.toJSON(),
DateTo: detail.to.toJSON(),
Filters: detail.filters
};
return http.post(window.urls.apiGetAllErrorsGraphData, params);
在我当前的例子中,params.DateFrom =“2014-04-30T23:00:00.000Z”的值,detail.from = 01/05/2014作为JS Date对象。
在这种情况下,'http.post'是我编写的一个Angular服务,它基本上包装了HTTP调用。.NET WebAPI控制器
[POST("api/errors/chart")]
[HttpPost]
[HttpOptions]
public IHttpActionResult GetAllErrorsGraphData([FromBody]AllErrorChartDetails details)
{
var results = chartDataService.GenerateAllErrorsData(details.DateFrom, details.DateTo, details.Filters);
return Ok(results.Select(x => new { date = x.Key, errors = x.Value }));
}
如果您对该方法的属性感到好奇,我正在使用AttributeRouting。
答案 0 :(得分:0)
当你将DateTime对象检索到你需要的任何格式时,你能不能只转换它?
DateTime json = yourJsonMethod();
json = json.ToLocalTime();