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

25

我如何从 $.ajax 发送 int 数组到 c# mvc?


我尝试了3-4个例子,但无法运行。可能的原因是什么? - Anton Lyhin
[Ajax] 公共布尔型例子(int[] 数组) - Anton Lyhin
1
请提供更多细节,包括代码,说明您尝试了什么以及看到什么结果。 - Ben Parsons
我想检查所有的示例,但是它们中的大多数都会向C#方法发送null。 - Anton Lyhin
我认为@Darin Dimitrov在这里给出了适当的答案 - Muhammad Ashikuzzaman
5个回答

41
$.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。

请查看这个问题。


2
我的代码无法运行...找不到原因。当我输入方法参数为空时。 - Anton Lyhin
3
抱歉,你需要使用JSON.stringify([1,2,3])。我已经编辑了答案。 - Daniel
@Daniel,这对我也有效,但我有一个问题。为什么数组名称无关紧要(“ints”)?通常如果数据:{BasvuruId:BasvuruId},在js中,变量名必须与操作中的相同(BasvuruId)。 - MustafaP
数据类型为 "json" 常常被忽略... 至少,我是这样的。 - DavidCC

3

尝试使用这个问题中提供的解决方案:

Set the traditional property to true before making the get call. i.e.:

jQuery.ajaxSettings.traditional = true

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

代码没有发送值。链接很好。 - Anton Lyhin

2
我使用一个简单的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
});

最后,我只需像这样拆分元素:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Method(string elements)
{
    IList<long> selected = elements.Split<long>(',');
    ...
}

2
最简单的方法是在GET请求的参数中发送一个分隔符(可能是逗号)分隔的整数字符串列表,然后在C# MVC接收器上使用Sting.Split()进行解析。
例如:$.get("/path-to/receiver/", { myArray: myArray.toString() } ); 然后,在服务器上使用string[] stringArray = Request.QueryString["myArray"].ToString().Split(',')将值提取到字符串数组中,然后使用Int32.TryParse最终得到一个整数数组。 jQuery GET语法
JS Array toString()语法

没有发送值。没有可解析的内容。 - Anton Lyhin
这只是一个例子 - 您需要用自己的值替换“myArray”等。 请求URL应该类似于 /path-to/receiver/?myArray=your,array,contents - Ben Parsons

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',

});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接