2014-04-25 97 views
0

我有以下jQuery代碼傳遞的值的陣列,如何打通.getJSON方法在控制器方法的參數

var ids = [] 
var id ={"Param1": 1, "Param2": 2, "Param3": 3} 
ids.push(id) 
var id ={"Param1": 3, "Param2": 2, "Param3": 6} 
ids.push(id) 

$.getJSON("/Controller/Action1", 
      { 
       str: ids 
      } 
      , function (data) { 
     }); 

    public JsonResult Action1(string[] str) 
    { 

     return Json("Success", JsonRequestBehavior.AllowGet); 

    } 

我知道字符串數組是不正確的。什麼是正確的參數類型來獲取從jQuery傳遞的集合。

在此先感謝!

+0

我試過列表,但值爲空。沒有運氣。 – user472269

回答

0

爲您的操作嘗試使用的FormCollection比看重點和項目集合

public JsonResult Action1(FormCollection ids) 
{ 
     //ids["Param1.[0]"] <--Just off the top of my head, I think this is what the key name would be. 
     //ids.AllKeys <--Use this to see the actual key names. 
} 
0

您傳遞對象的數組,你怎麼能解析它在一個字符串。

試試這個

創建您想要傳遞相同屬性的類。

public class Test 
{ 
public int Param1{get;set;} 
public int Param2{get;set;} 
public int Param3{get;set;} 
} 

jQuery的

var Tests= [] 
var Test={"Param1": 1, "Param2": 2, "Param3": 3} 
Tests.push(id) 
var Test={"Param1": 3, "Param2": 2, "Param3": 6} 
Tests.push(id) 


$.getJSON("/Controller/Action1", 
      { 
       Tests: JSON.stringify(Tests) 
      } 
      , function (data) { 
     }); 

    public JsonResult Action1(IList<Test> Tests) 
    { 

     return Json("Success", JsonRequestBehavior.AllowGet); 

    } 
+0

謝謝Nitin。 – user472269

0

你要發送對象的集合到控制器,嘗試下面的實現是:

var data = {}; 
    data["ids[0].Param1"] = 1 
    data["ids[0].Param2"] = 2 
    data["ids[0].Param3"] = 3 

    data["ids[1].Param1"] = 3 
    data["ids[1].Param2"] = 2 
    data["ids[1].Param3"] = 6 

$.getJSON("/Controller/Action1",data   
      , function (response) { 
     }); 

然後在你的控制器創建一個模型,這樣就可以綁定到模型的集合:

public class MyModel 
    { 
    public int Param1{get;set;} 
    public int Param2{get;set;} 
    public int Param3{get;set;} 
    } 


    public JsonResult Action1(IList<MyModel> ids) 
     { 

      return Json("Success", JsonRequestBehavior.AllowGet); 

     } 
相關問題