将视图数组从视图传递给控制器

时间:2012-11-20 20:43:50

标签: c# asp.net asp.net-mvc

  

可能重复:
  Send array to MVC controller via JSON?

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

我的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
    }

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试traditional: true引用的$.ajax({ url: '@(Url.Action("removeSelected"))', type: 'POST', traditional: true, data: { listOfStuff: listOfStuff }, dataType: 'json', success: function ( return_data ) { $( ":checkbox:checked" ).closest('tr').remove(); } }); 建议,该建议来自in this answer,是:

  

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

这种变化看起来像是:

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
});

为:

{{1}}