【问题标题】:How can I send int array from ajax to c# mvc?如何将 int 数组从 ajax 发送到 c# mvc?
【发布时间】:2012-02-24 22:38:02
【问题描述】:

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

【问题讨论】:

  • 我尝试了 3-4 个示例,但无法运行它。可能是什么原因?
  • [Ajax] 公共布尔示例(int[] ints)
  • 请提供更多详细信息,说明您尝试了什么以及看到的结果,包括代码。
  • 我想检查所有示例,但其中大多数将 null 发送到 c# 方法。
  • 我认为@Darin Dimitrov 给了appropriate answer here for this

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


【解决方案1】:

试试这个解决方案:

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

});

【讨论】:

    【解决方案2】:

    最简单的方法是将整数的分隔(可能是逗号)字符串列表作为 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

    【讨论】:

    • 不发送值。没有什么可解析的。
    • 这只是一个例子——你需要用你自己的值替换“myArray”等。请求 url 应该类似于 /path-to/receiver/?myArray=your,array,contents
    【解决方案3】:
    $.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.

    【讨论】:

    • 从我的代码中不起作用...无法理解原因。当我输入方法参数为null。
    • 对不起,你必须使用 JSON.stringify([1,2,3]) 我已经编辑了答案
    • @Daniel 它也适用于我,但我有一个问题。为什么数组名称是什么(“ints”)并不重要?通常如果数据:{BasvuruId:BasvuruId},在js中,变量名称必须相同(BasvuruId)。
    • dataType:"json" 经常被忽视……至少,我是这样。
    【解决方案4】:

    我的做法是使用一个简单的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>(',');
        ...
    }
    

    【讨论】:

      【解决方案5】:

      尝试this question的解决方案:

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

      jQuery.ajaxSettings.traditional = true
      
      $.get('/controller/MyAction', 
          { vals: arrayOfValues }, 
          function (data) {
            ...
          }
      

      【讨论】:

      • 代码不发送值。链接很好。
      猜你喜欢
      • 1970-01-01
      • 2015-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      相关资源
      最近更新 更多