Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将字符串数组从ajax函数传递到mvc控制器_Javascript_C#_Arrays_Ajax_Asp.net Mvc - Fatal编程技术网

Javascript 将字符串数组从ajax函数传递到mvc控制器

Javascript 将字符串数组从ajax函数传递到mvc控制器,javascript,c#,arrays,ajax,asp.net-mvc,Javascript,C#,Arrays,Ajax,Asp.net Mvc,当在引导数据表中选择一行时,我建立了一个数组。然后我需要将这个从我的视图传递到控制器,控制器将启动一个局部视图。然而,当我执行代码时,我的控制器中出现空引用异常。控制器中的代码只是实际使用的占位符,但用于显示我打算在加载数组时循环数组。关于为什么它会显示NULL的任何想法,即使我可以在debug中看到它有值 阿贾克斯: 控制器: public ActionResult MoveSelectedRoute(string[] orders) { string OrdersToMove = s

当在引导数据表中选择一行时,我建立了一个数组。然后我需要将这个从我的视图传递到控制器,控制器将启动一个局部视图。然而,当我执行代码时,我的控制器中出现空引用异常。控制器中的代码只是实际使用的占位符,但用于显示我打算在加载数组时循环数组。关于为什么它会显示NULL的任何想法,即使我可以在debug中看到它有值

阿贾克斯:

控制器:

public ActionResult MoveSelectedRoute(string[] orders)
{
    string OrdersToMove = string.Empty;
    foreach (string row in orders)
    {
        string orderNo = orders.ToString().PadLeft(10, '0');
        if (OrdersToMove == string.Empty)
        {
            OrdersToMove = orderNo;
        }
        else
            OrdersToMove = OrdersToMove + "," + orderNo;
    }
}

您必须使用
JSON.stringify({orders:completeArray})
,并且您的C#代码将映射数组及其参数。

您必须使用
JSON.stringify({orders:completeArray})
和您的C#code将映射您的数组及其参数。

您需要添加
traditional:true
ajax选项以将数组发回集合

$.ajax({
    type: "Get",
    url: '@Url.Action("MoveSelectedRoute", "Transport")',
    data: { orders: completeArray },
    traditional true,
    success: function (data) {
        ....
    }
})
注意
traditional:true
选项仅适用于简单数组

另一种方法是对数据进行字符串化,将内容类型设置为
application/json
,并进行POST而不是GET

$.ajax({
    type: "Get",
    url: '@Url.Action("MoveSelectedRoute", "Transport")',
    data: JSON.stringify({ orders: completeArray }),
    contentType: "application/json; charset=utf-8"
    success: function (data) {
        ....
    }
})
最后一种选择是使用集合索引器生成和发送值

var data = {
    orders[0] = 'abc',
    orders[1] = 'xyz',
    orders[2] = '...'
}
$.ajax({
    type: "Get",
    url: '@Url.Action("MoveSelectedRoute", "Transport")',
    data: data,
    success: function (data) {
        ....
    }
})

您需要添加
traditional:true
ajax选项以将数组发回集合

$.ajax({
    type: "Get",
    url: '@Url.Action("MoveSelectedRoute", "Transport")',
    data: { orders: completeArray },
    traditional true,
    success: function (data) {
        ....
    }
})
注意
traditional:true
选项仅适用于简单数组

另一种方法是对数据进行字符串化,将内容类型设置为
application/json
,并进行POST而不是GET

$.ajax({
    type: "Get",
    url: '@Url.Action("MoveSelectedRoute", "Transport")',
    data: JSON.stringify({ orders: completeArray }),
    contentType: "application/json; charset=utf-8"
    success: function (data) {
        ....
    }
})
最后一种选择是使用集合索引器生成和发送值

var data = {
    orders[0] = 'abc',
    orders[1] = 'xyz',
    orders[2] = '...'
}
$.ajax({
    type: "Get",
    url: '@Url.Action("MoveSelectedRoute", "Transport")',
    data: data,
    success: function (data) {
        ....
    }
})

当我添加stringify时,它仍然会在控制器上接收到一个null through,这是不幸的。您可以尝试用“List”替换“string[]”,还可以将这些属性添加到ajax调用中:contentType:“application/json;charset=utf-8”,dataType:“json”,我已经尝试过这些,但没有一个成功。当我添加stringify时,它仍然会在控制器上接收到一个空值。不幸的是,您可以尝试用“List”替换“string[]”,也可以将这些属性添加到ajax调用中:contentType:“application/json;charset=utf-8”,数据类型:“json”,我已经试过了,但没有一个奏效。不幸的是,你没有展示什么是
completeArray
!但是假设它是一个字符串数组,例如
[“a”,“b”,“c']
,那么您需要添加
traditional:true,
ajax选项;charset=utf-8',不幸的是,这些都不起作用,它只是一个字符串数组,我给你的两个选项都起作用了!Stephen我误读了你给出的选项,并将它们组合在一起。stringify不起作用,但是传统的:是的,起作用了。如果你回答这个问题,我会记下来。感谢您没有展示什么是
completeArray
!但是假设它是一个字符串数组,例如
[“a”,“b”,“c']
,那么您需要添加
traditional:true,
ajax选项;charset=utf-8',不幸的是,这些都不起作用,它只是一个字符串数组,我给你的两个选项都起作用了!Stephen我误读了你给出的选项,并将它们组合在一起。stringify不起作用,但是传统的:是的,起作用了。如果你回答这个问题,我会记下来。谢谢