我正在使用ASP.NET Web表单和一个隐藏的值来存储我的淘汰视图模型,以在序列化后传递到下一页。

ko.toJSON(viewModel) 返回 [{}] 如果ViewModel中没有元素。当将其传递给JavaScript序列化器时,它会炸毁,因为字符串的“ null”为字符串。

var stringValue = MyHiddenField.Value

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

有什么方法可以处理JavaScriptSerializer的空JSON?

谢谢

有帮助吗?

解决方案

这可能是因为您正在初始化这样的观察值:

var a = ko.observable();

如果这样做,则未包装的值 a 将不确定。 KO.TOJSON调用本机json.stringify函数,该函数不会序列化具有未定义值的属性。为了防止这种情况,最简单的方法是初始化这样的观察值:

var a = ko.observable(null);

关于序列化,这将导致“ a”:null,javaScriptSerialializer应该能够消化。

这是一个带有示例的小提琴,检查控制台: http://jsfiddle.net/v87ky/1/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top