ASP.NET MVC 3 Json模型绑定3级对象

时间:2011-11-02 12:22:18

标签: json asp.net-mvc-3 model-binding

为什么json的3级嵌套模型绑定不起作用?

使用2级进行测试,比如在LevelTwo上添加字符串属性,可以正常工作,但3级不是吗?这是设计,错误,还是我错过了什么?

客户端jQuery帖子:

    $.ajax({
        url: "MyController/MyAction",
        dataType: "json",
        type: "POST",
        cache: false,
        data: {
            Level1: {
                Level2: {
                    StringValue: "Test"
                }
            }
        }
    });

服务器端模型:

public class MyForm
{
    public LevelOne Level1 { get; set; }
}

public class LevelOne
{
    public LevelTwo Level2 { get; set; }
}

public class LevelTwo
{
    public string StringValue { get; set; }
}

1 个答案:

答案 0 :(得分:1)

  

为什么json的3级嵌套模型绑定工作

您没有向服务器发送任何JSON。如果您想在此处发送JSON请求,请执行以下操作:

$.ajax({
    url: "MyController/MyAction",
    contentType: 'application/json; charset=utf-8',
    dataType: "json",
    type: "POST",
    cache: false,
    data: JSON.stringify({ 
        Level1: { 
            Level2: { 
                StringValue: "Test" 
            } 
        } 
    })
});

JSON.stringify方法是将javascript文字序列化为JSON字符串的方法。它原生于现代浏览器中。如果您需要支持旧版浏览器,则可以在页面中加入json2.js脚本。