我将数据发布到由knockout字符串化的控制器:
var data = ko.toJSON(viewModel);
$.ajax({
type: 'POST',
url: '@Url.Action("Action")',
data: { data: data },
dataType: 'json'
....
})
然后在服务器端,我尝试用JsonConvert反序列化数据。
var viewModel = JsonConvert.DeserializeObject<ViewModel>(data,
new JsonSerializerSettings
{
DateTimeZoneHandling = DateTimeZoneHandling.Local,
DateFormatHandling = DateFormatHandling.IsoDateFormat
});
如果数据包含空值(序列化为&#34; NaN&#34;),则会失败,如下所示:
"MyField":"NaN"
没有空值,它可以正常工作。
我尝试将 NullValueHandling = NullValueHandling.Include / Ignore 添加到序列化程序设置中,但均未成功。
答案 0 :(得分:1)
我通过在敲除字符串中添加一个小replacer function来解决这个问题(正如DavidG所建议的那样 - 谢谢你,我应该从头开始做这项工作)。
var data = ko.toJSON(viewModel, function (key, value) {
if (value == "NaN") {
return;
}
else {
return value;
}
});