0

可能重复:
通过 JSON 将数组发送到 MVC 控制器?

到目前为止,我还没有真正找到一个好的解决方案。

我的 javascript/jQuery 和我尝试使用 ajax 发送数据。

    var val = new Array();
    $( ':checkbox:checked' ).each( function ( i )
    {
        console.log( $( this ).val() );
        val[i] = $(this).val();
    });
    removeSelected(val);


function removeSelected(listOfStuff)
{
    $.ajax({
        url: '@(Url.Action("removeSelected"))',
        type: 'POST',
        data: { listOfStuff: listOfStuff },
        dataType: 'json',
        success: function ( return_data )
        {
            $( ":checkbox:checked" ).closest('tr').remove();
        }
    });

还有我的控制器。数组以 null 形式出现。

    [HttpPost]
    public bool removeSelected ( string[] listOfStuff )
    {
       //do stuff
    }

有什么建议么?

4

1 回答 1

1

您可以尝试此答案traditional: true中引用的建议,根据API 参考,该建议是:

一个布尔值,指示是否执行传统的“浅”序列化。

这种变化看起来像:

$.ajax({
    url: '@(Url.Action("removeSelected"))',
    type: 'POST',
    traditional: true,
    data: { listOfStuff: listOfStuff },
    dataType: 'json',
    success: function ( return_data )
    {
        $( ":checkbox:checked" ).closest('tr').remove();
    }
});

另外,我可以对你的代码提出一个小建议吗?我会改变这个:

var val = new Array();
$( ':checkbox:checked' ).each( function ( i )
{
    console.log( $( this ).val() );
    val[i] = $(this).val();
});

至:

var val = []; // use this array notation
$(':checkbox:checked').each(function ()
{
    console.log($(this).val());
    val.push($(this).val()); // use push() instead of an index
});
于 2012-11-20T20:49:30.270 回答