【问题标题】:How to send array from AJAX to Controller in asp.net? [duplicate]如何将数组从 AJAX 发送到 asp.net 中的控制器? [复制]
【发布时间】:2018-02-12 20:42:19
【问题描述】:

我正在尝试从 AJAX POST 向我的控制器发送一个数组。 我的要求:

var selected = [];
$('.unitsCheckBox:checked').each(function () {
    selected.push($(this).val());
});

data = {
    Units: selected
};
console.debug(data);

$.ajax(
{
    url: "/PostVacancies/PostData",
    type: "POST",
    dataType: 'json',
    data: JSON.stringify(data),
    contentType: 'application/json; charset=utf-8',
    success: function (result) {
        console.debug(result);
    },
    error: function (xhr, status, p3, p4) {
        console.debug(xhr);
        console.debug(status);
        console.debug(p3);
        console.debug(p4);
    }
});

调试显示数据变量中有选定的单位。

我的控制器:

[HttpPost]
    public bool PostData(SelectedUnits Units)
    {


        return true;
    }

SelectedUnits 方法:

public class SelectedUnits
{
    public List<int> Units { get; set; }
}

我在return中设置了一个调试点查看Units参数数据,但始终为null。

有谁知道我做错了什么?

【问题讨论】:

  • 尝试在控制器中添加[FromBody] SelectedUnits Units。此外,不要将其包裹在 data ={...} 中,只需发送 selected 本身即可。
  • 找不到类型或命名空间名称“FromBody”
  • 确保您在顶部有using Microsoft.AspNetCore.Mvc;
  • 我得到...无法安装包“Microsoft.AspNetCore.Mvc 2.0.2”。您正在尝试将此包安装到以“.NETFramework,Version=v4.5.2”为目标的项目中,但该包不包含任何与该框架兼容的程序集引用或内容文件
  • 只能使用 [FromBody] 吗?我以为我可以以与班级相同的格式发送数据

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


【解决方案1】:

在您的代码中,Units 在客户端始终为空。我们通常附加到复选框的更改事件。

<input type="checkbox" class="unitsCheckBox" value="1" />
<input type="checkbox" class="unitsCheckBox" value="2" />
<input type="checkbox" class="unitsCheckBox" value="3" />
<input type="checkbox" class="unitsCheckBox" value="4" />
<button type="button" id="btnSubmit">Submit</button>

@section Scripts
{
    <script>
        data = { Units: [] };

        $('.unitsCheckBox').change(function() {
            if ($(this).is(':checked')) {
                data.Units.push($(this).val());
            } else {
                data.Units.pop($(this).val());
            }
        });

        $('#btnSubmit').click(function() {

            console.log(JSON.stringify(data));

            $.ajax({
                url: "/Home/Index",
                type: "POST",
                dataType: 'json',
                data: JSON.stringify(data),
                contentType: 'application/json; charset=utf-8',
                success: function(result) {
                    console.debug(result);
                },
                error: function(xhr, status, p3, p4) {
                    console.debug(xhr);
                    console.debug(status);
                    console.debug(p3);
                    console.debug(p4);
                }
            });
        });

    </script>
}

【讨论】:

    猜你喜欢
    • 2019-06-21
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多