2014-04-25 58 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); 

     } 
相关问题