我是JSON的新手,我尝试在我的控制器中的JsonResult方法中传递一些数据。 该方法接受AModel作为参数。此AModel定义了一些属性和BModel。
所以,我写道:
function loadDatas() {
var values =
{
"Title" : "The title",
"Text" : "Blahblahblah",
"BModel" :
{
"Summary" : "lorem ipsum",
"Page" : "15"
}
};
$.post("@Url.Action("Load", "MyController")",values,function(data)
{
// do stuff;
});
我的Load方法定义为:
[HttpPost]
public JsonResult Load(AModel test)
{
return Json(test); //dummy example, just serialize back the AModel object
}
当我在Load的开括号上放置断点时,test.Title和test.Text具有良好的值,但test.BModel.Summary和test.BModel.Page为null。
这个问题中最糟糕的部分是如果我发出警报(values.HousingModel.Summary);显示的值是好的!为什么它没有正确发送到我的方法,而values.Title和values.Text是??
我用这个链接来理解JSON格式(http://www.sitepoint.com/javascript-json-serialization/),我的看似有效......不是吗?
感谢您的帮助
亚历
答案 0 :(得分:1)
行动方法
[HttpPost]
public JsonResult Json(AModel test)
{
return Json(new { Success = true });
}
<强> JQuery的强>
$.ajax({
url : "@Url.Action("Load", "MyController")",
contentType : "application/json; charset=utf-8",
dataType : "json",
type : "POST",
data : JSON.stringify({test: values})
})}).done(function (result) {
//Success
}).fail(function (result) {
//Failed
}).always(function(result) {
//Always
});
<强>模型强>
public class AModel
{
public string Title { get; set; }
public string Text { get; set; }
public BModel BModel { get; set; }
}
public class BModel
{
public string Summary { get; set; }
public string Page { get; set; }
}
<强>误强>
答案 1 :(得分:0)
没有看到小时模型,我们无法给你明确的答案,但...... 您的BModel.Page可能是C#中的整数吗?如果是这样,模型绑定器无法使用您的javascript字符串值...
在该SubObject上设置您的值