【问题标题】:Pass an array of strings from view to controller [duplicate]将字符串数组从视图传递到控制器[重复]
【发布时间】:2012-11-20 20:43:50
【问题描述】:

可能重复:
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
    }

有什么建议吗?

【问题讨论】:

  • 在黑暗中快速拍摄:你试过'listOfStuff': listOfStuff(键上带有'')吗?
  • 可能您在客户端的数组实际上并没有字符串,而是数字或其他任何内容,但没有字符串?

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


【解决方案1】:

您可以尝试引用in this answertraditional: true 建议,它来自the API reference,是:

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

这种变化看起来像:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 2019-11-27
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 2018-06-11
    相关资源
    最近更新 更多