如何将int数组从ajax发送到c#mvc?

时间:2012-02-02 09:02:52

标签: ajax asp.net-mvc arrays jquery asp.net-ajax

如何将$ .ajax中的int数组发送到c#mvc?

5 个答案:

答案 0 :(得分:35)

$.ajax({
          url: <Url of the action>,
          type: "POST",
          data: JSON.stringify([1,2,3]),
          dataType: "json",
          contentType: 'application/json; charset=utf-8'
});

并在行动中。

public ActionResult ReceiveIntArray(int[] ints)
{
   ...
}

mvc应该自动解析json。

结帐this question.

答案 1 :(得分:2)

尝试this question的解决方案:

  

在进行get调用之前将traditional属性设置为true。即:

jQuery.ajaxSettings.traditional = true

$.get('/controller/MyAction', 
    { vals: arrayOfValues }, 
    function (data) {
      ...
    }

答案 2 :(得分:1)

最简单的方法是在GET请求中发送一个分隔符(可能的逗号)字符串列表作为参数,然后使用Sting.Split()在C#MVC接收器上解析它们。

所以,例如 $.get("/path-to/receiver/", { myArray: myArray.toString() } );

然后,在服务器上,使用

string[] stringArray = Request.QueryString["myArray"].ToString().Split(',')

将值提取到字符串数组,然后Int32.TryParse最终得到一个整数数组。

jQuery GET Syntax
JS Array toString() syntax

答案 3 :(得分:1)

我这样做的方式是使用简单的input:hidden元素

<input type="hidden" name="elements" value='@String.Join(",", ViewBag.MyArray)' />

在JavaScript代码中,我将其作为字符串传递:

$.ajax({
   type: "POST",
   url: '/Controller/Method',
   data:
      {
          recipients: $("input[name=elements]").val()
      },
      traditional: true,
      success: updateSelected
});

最后我只是Split这样的元素:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Method(string elements)
{
    IList<long> selected = elements.Split<long>(',');
    ...
}

答案 4 :(得分:0)

试试这个解决方案:

var Array = [10, 20, 30];

$.ajax({
    type: "Post",
    datatype: "Json",
    url: <Url of the action>,
    data: JSON.stringify(Array),
    contentType: 'application/json; charset=utf-8',

});