将一个对象列表从Javascript绑定到ASP.NET MVC2 Controller中的模型

时间:2011-12-21 06:59:49

标签: c# json

我从javascript

调用JSON.stringify后获得了以下JSON
{"parameters":"[{\"ParamName\":\"@s\",\"ParamValue\":\"12\"},{\"ParamName\":\"@t\",\"ParamValue\":\"21\"}]"}

如何将此映射到我的ASP.Net MVC2控制器中的以下模型

public class SCVM
{
    public string content { get; set; }
    public string type { get; set; }
    public List<Parameters> parameters { get; set; }

    public SCVM()
    {
        parameters = new List<Parameters>();
    }
}

public class Parameters
{
    public string ParamName { get; set; }
    public string ParamValue { get; set; }
}

我试图用字典格式或列表对象来获取它,但发现很难以正确的方式解决它。

1 个答案:

答案 0 :(得分:1)

如果你的json看起来像这样:它可能应该。 (见我对你问题的评论)

{
    "parameters":[
        {
            "ParamName":"@s",
            "ParamValue":"12"
        },
        {
            "ParamName":"@t",
            "ParamValue":"21"
        }
    ]
}

使用这段javascript你将创建正确的json:

var parametersCollection = {
    parameters: []
}; 

function QueryParameters(paramName, paramValue) { this.ParamName = paramName;     this.ParamValue = paramValue; }

parametersCollection.parameters.push(new QueryParameters("@s", "12"));
parametersCollection.parameters.push(new QueryParameters("@t", "21"));

var json = JSON.stringify(parametersCollection);

你可以使用Json.NET see here进行反序列化,如下所示:

SCVM scvm = JsonConvert.DeserializeObject<SCVM>(json);

其中json是一个字符串,其json的格式与我显示的一样

Here是一个关于如何使用jquery将json数据发布到MVC2站点的优秀教程。您甚至不必使用Json.NET库来反序列化您的json。