我有下一个JS代码,我呼叫控制器方法SaveSettings:天冬氨酸MVC 3 JSON复杂的对象不初始化属性
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映射的类结构是否不正确?
是的,你是绝对正确的。谢谢。 –