【发布时间】:2012-01-10 04:19:35
【问题描述】:
我有下一个 JS 代码,我在其中调用控制器方法 SaveSettings:
function SaveSettings() {
// get json object from knockoutjs object
var data = ko.toJSON(viewModel);
var params = JSON.stringify(data);
$.ajax({
url: '/MyAjax/SaveSettings/',
type: "POST",
data: JSON.stringify(data),
dataType: "JSON",
contentType: "application/json; charset=UTF-8",
success: function (result) {
alert('ok');
}
});
}
JSON 数据具有下一个格式并发送到控制器:
{
"Name":"xcvxcvxcv",
"GeneralSetting":
{
"Data1":{"IsSync":true,"Value":0},
"Data2":{"IsSync":false,"Value":0},
"PasswordLenght":{"IsSync":false,"Value":7},
"PasswordMessage":{"IsSync":false,"Value":null},
"DiscoverSerialPort":{"IsSync":false,"Value":true}
},
"MailSettings":
{
"IsEnabled":{"IsSync":false,"Value":false},
"ServerAddress":{"IsSync":false,"Value":null},
"PortNumber":{"IsSync":false,"Value":0},
"UserName":{"IsSync":false,"Value":null},
"Password":{"IsSync":false,"Value":null},
"IsSecureNetwork":{"IsSync":false,"Value":false},
"PollFrequency":{"IsSync":false,"Value":0},
"AdminFromEmail":{"IsSync":false,"Value":null},
"AdminEmail":{"IsSync":false,"Value":null},
"ReplyToEmail":{"IsSync":false,"Value":null},
"BCCEmail":{"IsSync":false,"Value":null},
"AuthenticationMethod":{"IsSync":false,"Value":0}
}
}
我的控制器方法如下:
.....
[HttpPost]
public JsonResult SaveSettings(GlobalData data)
{
return Json(false.ToString(), JsonRequestBehavior.AllowGet);
}
.....
public class GlobalData
{
public string Name { get; set; }
public GeneralSetting GeneralSetting { get; set; }
public MailSetting MailSettings { get; set; }
}
public class MailSetting
{
public SelectedProperty IsEnabled { get; set; }
public SelectedProperty ServerAddress { get; set; }
public SelectedProperty PortNumber { get; set; }
public SelectedProperty UserName { get; set; }
public SelectedProperty Password { get; set; }
public SelectedProperty IsSecureNetwork { get; set; }
public SelectedProperty PollFrequency { get; set; }
public SelectedProperty AdminFromEmail { get; set; }
public SelectedProperty AdminEmail { get; set; }
public SelectedProperty ReplyToEmail { get; set; }
public SelectedProperty BCCEmail { get; set; }
public SelectedProperty AuthenticationMethod { get; set; }
}
public class GeneralSetting
{
public SelectedProperty ScreenTimeout { get; set; }
public SelectedProperty AdminScreenTimeout { get; set; }
public SelectedProperty PasswordLenght { get; set; }
public SelectedProperty PasswordMessage { get; set; }
public SelectedProperty DiscoverSerialPort { get; set; }
}
public class SelectedProperty
{
public bool IsSync { get; set; }
public object Value { get; set; }
}
JSON 对象和我的 GlobalData 类具有相同的结构。(看起来他们有)
然后方法 SaveSettings 开始工作 GlobalData 变量在 GlobalData 类中定义的所有属性中包含 NULL。 为什么会这样?我的类结构对于内部 MVC 映射是否不正确?
【问题讨论】:
标签: jquery json asp.net-mvc-3 knockout.js