【问题标题】:Pass a List<int> from javascript to controller将 List<int> 从 javascript 传递给控制器
【发布时间】:2013-04-30 00:19:35
【问题描述】:

我正在尝试将List&lt;int&gt; 从我的View 传递给我的Controller。我尝试了多种方法,使用不同的参数。没有运气。

我目前正在尝试将{[4,5,13]} 传递给带有参数List&lt;int&gt; ids 的方法。

发送数字列表或数组的正确格式是什么?

【问题讨论】:

    标签: c# javascript


    【解决方案1】:

    我相信你必须传递这样的东西:

    {"ids":[4,5,13]}
    

    如果您使用的是 AJAX,那么我记得我必须将 traditional 设置为 true (See the jquery ajax documentation) 这样才能正确解析参数。

    【讨论】:

    • 从头开始。如果打开 traditional 选项,您实际上可以发送 javascript 数组对象。
    • @DoctorOreo 是的,这就是我一直喜欢的原因。我不得不拔出 Fiddler 来解决这个问题 :) 很高兴它对其他人有帮助
    【解决方案2】:

    AJAX 方式:

    来自AJAX 的 jquery 文档:

    数据

    类型: PlainObject 或 String
    要发送到服务器的数据。这是 转换为查询字符串,如果还不是字符串。它附加到 GET 请求的 url。请参阅 processData 选项以防止这种情况 自动处理。对象必须是键/值对。如果值是 数组,jQuery基于相同的键序列化多个值 传统设置的值(如下所述)。

    传统的

    类型: Boolean
    如果您希望使用 param serialization的传统风格。

    var roleList = new Array();
    var usrId = "testuser";
    
    /* one  way of adding items to array */
    roleList.push(1);
    roleList.push(5);
    roleList.push(8);
    
    $.ajax({
                type: "POST",
                traditional: true, /* I M P O R T A N T */
                url: /* url to controller goes here */,
                data: { userId: usrId, allowedRoles: roleList },
                success: function(returndata) {
                    alert("Done");
                },
                error: function(returndata) {
                    alert("Error:\n" + returndata.responseText);
                }
            });
    

    【讨论】:

    • traditional: true, /* I M P O R T A N T */ 完成这项工作。谢谢!
    猜你喜欢
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多