在我的引导数据表中选择了一行时,我建立了一个数组。然后我需要将这个从我的视图传递给控制器,控制器将启动局部视图。但是,当我执行代码时,我的控制器中出现空引用异常。控制器中的代码只是实际使用的占位符,但是显示我打算在加载数组时循环它。关于为什么它会显示NULL的任何想法,即使我在调试中看到它有值。
AJAX:
function MoveSelected() {
$.ajax({
type: "Get",
url: '@Url.Action("MoveSelectedRoute", "Transport")',
data: { orders: completeArray },
success: function (data) {
$('#detail_MoveSelectedOrders').html(data);
$('#modalMoveSelectedOrders').modal('show');
}
})
}
控制器:
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;
}
}
答案 0 :(得分:2)
您必须使用JSON.stringify({ orders: completeArray })
,您的C#代码将使用其参数映射您的数组。
答案 1 :(得分:1)
您需要添加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) {
....
}
})