2014-05-02 27 views
0

這是我的控制器操作:發佈對象的JavaScript數組來MVC4控制器

public ActionResult BrowsePartial(IList<SearchParam> searchParams = null) 
{ 
    //... 
} 

這是對象模型:

public class SearchParam 
{ 
    public string Order { get; set; } 
    public string Type { get; set; } 
    public string Value { get; set; } 
} 

這裏是我如何將數據發送到控制器:

$.ajax(
{ 
    type: "GET", 
    url: url, 
    data: { searchParams: [{ Order: "fghfdhgfdgfd", Type: "sasdsa", Value: "saddsadsads" }, { Order: "fghfdhgfdgfd", Type: "sasdsa", Value: "saddsadsads" }, { Order: "fghfdhgfdgfd", Type: "sasdsa", Value: "saddsadsads" }] }, 
    mode: "replace", 
    cache: false, 
}); 

現在,當我調試動作時,我有一個IList<SearchParam>正確初始化爲3元素。但是,每個SearchParam對象(Order,TypeValue)的字段被初始化爲空。這裏可能是什麼問題?

+0

你的數據應該是這樣的:'數據:{訂單: 「拉拉」,鍵入: 「lala2」}'所以放下'searchParams'和覆蓋陣列' []' –

+0

但它必須是一個對象數組。不是一個單一的對象! –

+0

有什麼辦法可以實現這一點嗎? –

回答

2

我認爲,您可以在單個請求中發送數組參數的唯一方法是對其進行字符串化,並在您的控制器中反序列化。

$.ajax(
{ 
    type: "GET", 
    url: url, 
    data: { searchParams: JSON.stringify([{ Order: "fghfdhgfdgfd", Type: "sasdsa", Value: "saddsadsads" }, { Order: "fghfdhgfdgfd", Type: "sasdsa", Value: "saddsadsads" }, { Order: "fghfdhgfdgfd", Type: "sasdsa", Value: "saddsadsads" }])}, 
    mode: "replace", 
    cache: false, 
}); 


public ActionResult BrowsePartial(string searchParams = null) 
{ 
    SearchParam params = JsonConvert.DeserializeObject<SearchParam>(searchParams); 
} 

但是我也許錯了;)

+0

我已編輯你的代碼,現在它的工作原理) –

相關問題