ko.toJSON& JavaScriptSerializer问题

时间:2013-11-07 17:24:35

标签: c# knockout.js javascriptserializer

我正在使用asp.net网页表单和隐藏值来存储我的knockout viewmodel以在序列化后传递到下一页。

如果viewmodel中没有元素,

ko.toJSON(viewModel)会返回[{}]。 当这被传递给javascript序列化程序时,它会爆炸,因为字符串的字符串为“null”。

var stringValue = MyHiddenField.Value

var listOfObjects = new JavaScriptSerializer().Deserialize<List<MyObjects>>(stringValue);

有没有办法通过JavascriptSerializer处理空JSON?

由于

1 个答案:

答案 0 :(得分:1)

这可能是因为你正在初始化这样的observable:

var a = ko.observable();

如果这样做,a的展开值将是未定义的。 ko.toJSON调用本机JSON.stringify函数,该函数不会使用未定义的值序列化属性。为了防止这种情况,最简单的方法是初始化您的observable,如下所示:

var a = ko.observable(null);

在序列化时,这将导致“a”:null,JavaScriptSerializer应该能够消化它。

这是一个小例子,检查控制台:http://jsfiddle.net/v87Ky/1/