2

我是 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 为空。

这个问题最糟糕的部分是如果我发出警报(values.HousingModel.Summary);显示的价值是好的!为什么它不能正确发送到我的方法,而 values.Title 和 values.Text 是?

我使用这个链接来理解 JSON 格式(http://www.sitepoint.com/javascript-json-serialization/),我的似乎是有效的......不是吗?

谢谢你的帮助

亚历克斯

4

2 回答 2

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. 序列化丢失
  2. 缺少内容类型
  3. 缺少类型
于 2013-06-25T21:40:43.817 回答
0

如果没有看到小时模型,我们无法给您明确的答案,但是......您的 BModel.Page 是否有可能是 C# 中的整数?如果是这样,模型绑定器无法使用您的 javascript 字符串值在该子对象上设置您的值...

于 2013-06-25T21:46:05.790 回答