2013-03-19 59 views
0

我有一個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的列表,其中包含空鍵和值。

我看過我的序列化,它似乎有效,但無論出於何種原因,它不會正確地轉到我的應用程序。是什麼賦予了?

+0

你傳遞一切ASP作爲一個JSON對象,但你的方法需要兩個參數。 – bfavaretto 2013-03-19 18:22:04

回答

1

而不是期望簽名中有兩個對象,期望一個包含兩個參數的單個對象會更有意義。這將如下所示。

public JsonResult FacetedSearch(RequestObject requestObject) 
{ } 

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

這樣,當您發送JSON對象時,簽名是一個具有兩個屬性的對象,就像您要發送的對象一樣。

+0

這沒有奏效。值仍然爲空。 – 2013-03-19 19:14:59

+0

@JaySun與其調用JSON.stringify,如果使用值創建對象會發生什麼情況?它在那時對你的控制器有用嗎? – 2013-03-19 19:21:02

+0

然後我得到一個無效的JSON原始錯誤。 – 2013-03-19 19:24:08