关键值对列表的JSON表示
我有一个MVC JSON控制器方法,我从前端调用。它看起来像这样:关键值对列表的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 KeyValuePair的列表,其中包含空键和值。
我看过我的序列化,它似乎有效,但无论出于何种原因,它不会正确地转到我的应用程序。是什么赋予了?
而不是期望签名中有两个对象,期望一个包含两个参数的单个对象会更有意义。这将如下所示。
public JsonResult FacetedSearch(RequestObject requestObject)
{ }
public class RequestObject
{
public string searchString { get; set; }
public List<KeyValuePair<string,string>> facets { get; set; }
}
这样,当您发送JSON对象时,签名是一个具有两个属性的对象,就像您要发送的对象一样。
这没有奏效。值仍然为空。 – 2013-03-19 19:14:59
@JaySun与其调用JSON.stringify,如果使用值创建对象会发生什么情况?它在那时对你的控制器有用吗? – 2013-03-19 19:21:02
然后我得到一个无效的JSON原始错误。 – 2013-03-19 19:24:08
你传递一切ASP作为一个JSON对象,但你的方法需要两个参数。 – bfavaretto 2013-03-19 18:22:04