我有一个奇怪的问题,我们网格的编辑模板在编辑日期时会导致问题。
日期以 UTC 时区存储在服务器上。我使用以下模式来设置时区:-
private DateTime _minDate;
public DateTime MinDate
{
get { return _minDate; }
set { _minDate = DateTime.SpecifyKind(value, DateTimeKind.Utc); }
}
使用 WebApi OData 服务将日期加载到网格中。
{
"Id":50088,
"ProductId":101437,
"Valor":"12224000",
"ISIN":"CH0122240002",
"Description":"Outperformance Bonus Certificate, Multi Shares",
"Provider":"CSIB",
"AlertedTicker":"KO UN",
"ProtectionPercentage":1.0,
"ProtectionType":"Protection Lost",
"UnderlyingCurrency":"USD",
"BarrierLevel":190.0,
"BarrierPercentage":70.0,
"BarrierType":"Low",
"BarrierId":0,
"EventStructureId":170378,
"Date":"2013-11-20T00:00:00Z",
"Comment":null,
"Confirm":false,
"Reject":false
}
OData 服务正确序列化了 UTC 日期,并且日期完好无损地到达 UI。
在使用日期选择器控件编辑日期但仅使用键盘键入后,数据会以错误的格式发送回服务器。
{
"odata.metadata":"http://local.host:51850/web/odata/$metadata#PendingBarrierAlerts/@Element",
"Id":50088,
"ProductId":101437,
"Valor":"12224000",
"ISIN":"CH0122240002",
"Description":"Outperformance Bonus Certificate, Multi Shares",
"Provider":"CSIB",
"AlertedTicker":"KO UN",
"ProtectionPercentage":1.0,
"ProtectionType":"Protection Lost",
"UnderlyingCurrency":"USD",
"BarrierLevel":190.0,
"BarrierPercentage":70.0,
"BarrierType":"Low",
"BarrierId":0,
"EventStructureId":170378,
"Date":"2013-11-20T23:00:00Z",
"Comment":null,
"Confirm":false,
"Reject":false
}
请注意日期已更改时间!
如何在网格中编辑 UTC 日期并使用 OData 作为传输和远程数据源将它们正确返回到服务器?