将带有jQuery Post的JavaScript数组发布到ASP.NET MVC Action获取IEnumerable <T>

Fil*_*erg 2 javascript asp.net-mvc jquery

考虑一下,我有以下javascript做帖子:

$.post("/MyController/SomeAction", 
      { myParam: ['Filip', 'Ekberg'] }, function(data) { alert(data); }, "html");
Run Code Online (Sandbox Code Playgroud)

我的行动看起来像这样:

[HttpPost]
public ActionResult SomeAction(FormCollection collection, 
                               IEnumerable<string> myParam)
{
    return null;
}
Run Code Online (Sandbox Code Playgroud)

当我输入此Action时,myParam为null,如果我展开FormCollection,我会看到:

在此输入图像描述

这里奇怪的部分是名称(Key)myParam[]可能是它未映射到的原因myParam.

此外,我也尝试过dynamic[] myParam,但它也不起作用.

我知道我可以使用,JSON.stringify但我现在不想这样做.那么,任何想法在这里发生了什么以及是否有解决方案?

Dar*_*rov 6

尝试将traditional参数设置为true:

$.ajax({
    url: '/MyController/SomeAction',
    type: 'POST',
    data: { myParam: [ 'Filip', 'Ekberg' ] },
    traditional: true,
    success: function(data) {
        alert(data);
    }
});
Run Code Online (Sandbox Code Playgroud)

您也可以安全地FormCollection从POST操作签名中删除该参数.这毫无用处.