keyvaluepairs列表的JSON表示

时间:2013-03-19 18:19:17

标签: javascript jquery asp.net-mvc json

我有一个MVC JSON控制器方法,我从前端调用。它看起来像这样:

public JsonResult FacetedSearch(string searchString, List<KeyValuePair<string,string>> facets)

我在前端通过jQuery ajax调用它,我按以下方式序列化数据:

JSON.stringify({searchString: "the matrix", facets: [{Key: "TypeName", Value: "Feature Film"}, {Key:"TypeName", Value:"Series"}]}

当我通过我的应用程序代码调试时,我看到searchString成功传递给MVC方法,但变量facets为我提供了一个包含空键和值的2个KeyValuePairs的列表。

我查看了我的序列化,它似乎有效,但无论出于何种原因,它都没有正确地转到我的应用程序。是什么给了什么?

2 个答案:

答案 0 :(得分:1)

不要期望签名中有两个对象,期望包含两个参数的单个对象更有意义。这将类似于以下内容。

public JsonResult FacetedSearch(RequestObject requestObject)
{ }

public class RequestObject
{
    public string searchString { get; set; } 
    public List<KeyValuePair<string,string>> facets { get; set; }
}

这样,当您发送JSON对象时,签名是一个具有两个属性的对象,就像您要发送的对象一样。

答案 1 :(得分:0)

Is there a serializable generic Key/Value pair class in .NET?

我发现为什么它没有序列化它。显然它是无法排列的。