如何在asp.net?

时间:2018-02-12 20:42:20

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

我试图将一个数组从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; }
}

我在返回时设置了一个调试点,以查看Units参数数据,但它始终为null。

有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

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

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