你如何序列化JS数组,以便Asp.net MVC可以将它绑定到ac #list?

Kal*_*exx 5 javascript arrays asp.net-mvc

我正在尝试将一个jquery可排序项目列表发送到我的MVC方法进行数据处理.目前我正在尝试通过以下代码发送它:

var data = {};
data.projectId = projectId;
data.publishedSectionIds = $('#section_list').sortable('toArray');

// Perform the ajax
$.ajax({ url: '/Project/Publish',
    type: 'POST',
    data: data,
    success: function (result) {
        alert(result.message);
    } 
});
Run Code Online (Sandbox Code Playgroud)

这段代码的问题是它使Post参数看起来像这样:

projectId=2&publishedSectionIds[]=1&publishedSectionIds[]=2
Run Code Online (Sandbox Code Playgroud)

这个问题(可以从这个问题的解决方案中看出)是,如果post参数没有括号,MVC似乎只序列化为List .

如何序列化javascript数组,以便我使用List<int>参数模型的操作正确绑定?


编辑:动作的签名如下:

 public ActionResult Publish(int projectId, List<int> publishedSectionIds)
Run Code Online (Sandbox Code Playgroud)

Oke*_*oke 3

尝试添加以下选项传统:true

例如

$.ajax({ url: '/Project/Publish',
    type: 'POST',
    data: data,
    traditional: true,
    success: function (result) {
        alert(result.message);
    } 
});
Run Code Online (Sandbox Code Playgroud)

从 jQuery 1.4 开始,$.param() 方法递归地序列化深层对象,以适应现代脚本语言和框架,例如 PHP 和 Ruby on Rails。您可以通过设置 jQuery.ajaxSettings.traditional = true; 全局禁用此功能。

http://api.jquery.com/jQuery.param/