Asp.net 如何使用Url.Action发送数组

Asp.net 如何使用Url.Action发送数组,asp.net,asp.net-mvc,url.action,Asp.net,Asp.net Mvc,Url.action,我有一个名为data的整数数组,我想从我的视图将其发送到一个特定的控制器,我可以看到我可以发送整数和字符串,它可以与我目前为止的代码一起工作,但是当我尝试发送数组时,我可以正确地获取数据 在我看来,这就是我的代码,这是一个简单的透视图 function SeeStation() { var data = []; var i = 0; $("input:checkbox:checked").each(f

我有一个名为data的整数数组,我想从我的视图将其发送到一个特定的控制器,我可以看到我可以发送整数和字符串,它可以与我目前为止的代码一起工作,但是当我尝试发送数组时,我可以正确地获取数据

在我看来,这就是我的代码,这是一个简单的透视图

function SeeStation() {
                var data = [];
                var i = 0;
                $("input:checkbox:checked").each(function () {
                    data[i] = $(this).val();
                });
                window.location.href = "@Url.Action("ExportData", "Dispatch")?id=" + data;
            }
这是控制器中的代码。我知道这没有多大意义,但到目前为止,我专注于通过参数正确获取数组

public ActionResult ExportData(int[] id)
        {
            var data = cn.ESTACIONDESPACHOes.ToList();
            return View(data);
        }
在我的数组数据中我存储了这样的东西[1,2,3],我想在控制器数组id中得到类似的东西

试试看

@Url.Action("ExportData", "Dispatch", new { id= [1,2,3] })

它不会那样绑定。 要在操作中获取id数组,您需要在末尾有如下链接:
*Dispatch/ExportData?id=1&id=2&id=3*

您的
“@Url.Action(“ExportData”,“Dispatch”)?id=“+data不会生成该值(数据将给出用逗号分隔的数字)

您可以在枚举复选框时构建查询字符串

function SeeStation() {
    var data = '';
    $("input:checkbox:checked").each(function () {
    data += 'id='$(this).val() + '&';
    });  
    window.location.href = "@Url.Action("ExportData", "Dispatch")?" + data;
}
最后你会有一个“&”。您可以轻松地删除它,但它不会影响任何内容


也许有更好的方法可以做到这一点,但我只是使用了您的函数。

将值存储在隐藏字段中 @HiddenFor(m=>m.Ids,新的{@Value=[1,2,3]})

然后使用ajaxget方法传递隐藏字段

在控制器方法中,使用字符串扩展方法将sting转换为数组

function SeeStation() {
            var data = [];
            var i = 0;
            $("input:checkbox:checked").each(function () {
                data[i] = $(this).val();
            });
            location.href = '@Url.Action("ExportData", "Dispatch")?id=' + data;
        }

请删除窗口关键字。

为什么<代码>位置
窗口
对象的属性,因此引用是正确的,不太可能发生碰撞。