我遵循通常的建议,即使用toISODate js函数序列化要发送到服务器的javascript Date对象。
事实上Breeze.js正在为我做这件事,这很棒。当我的实体上的属性是DateTime时,一切都按预期工作 - 日期以UTC(0偏移日期)日期时间的形式保存到数据库。
当实体上的属性属于字符串时,我遇到了问题。通过网络发送的日期“ 2013-06-08T23:00:00Z ”将被反序列化为实体上的字符串属性为 06 / 08/2013 23:00:00 ',这与保存到数据库中varchar支持列的值相同。
因此,日期被反序列化为' en-US '格式化日期(MM / dd / yyyy HH:mm:ss)。我不知道为什么会发生这种情况或者如何更改内容以便字符串保持完整,因为它被反序列化为 string 属性。
一些技术说明:
非常欢迎帮助!
由于 Christian Crowhurst
答案 0 :(得分:0)
对于.NET服务器,Breeze使用JSON.net来序列化/反序列化json。 Breeze允许您通过自动检测'BreezeConfig'类的任何“自定义”实现来配置它。
这意味着您可以通过实现BreezeConfig的子类来自定义Breeze对JSON.Net的序列化行为的使用。这可能在您的服务器项目中看起来像这样。
using Breeze.ContextProvider;
using Breeze.WebApi2;
using Newtonsoft.Json;
namespace Sample_WebApi2 {
public class CustomBreezeConfig : BreezeConfig {
/// <summary>
/// Override to use a specialized JsonSerializer implementation.
/// </summary>
protected override JsonSerializerSettings CreateJsonSerializerSettings() {
// get the breeze default settings.
var baseSettings = base.CreateJsonSerializerSettings();
// Not sure if this is the setting you want but...
baseSettings.DateParseHandling = DateParseHandling.None;
return baseSettings;
}
}