我有一个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的列表。
我查看了我的序列化,它似乎有效,但无论出于何种原因,它都没有正确地转到我的应用程序。是什么给了什么?
答案 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?
我发现为什么它没有序列化它。显然它是无法排列的。