идентификатор всех выбранных флажков не передается в действие контроллера

#asp.net-core

Вопрос:

как выбрать все идентификаторы в контроллере, вот мой jquery ` $(документ).готово(функция () {

     $("#checkAll").click(function () {
        $(".checkBox").prop('checked',
            $(this).prop('checked'));
    });

    $("#delete").click(function () {
        var selectedIDs = new Array();
        $('input:checkbox.checkBox').each(function () {
            if ($(this).prop('checked')) {
                selectedIDs.push($(this).val());
            }
        });

        var options = {};
        options.url = "/home/AjaxMethod";
        options.type = "POST";
      //  options.data = JSON.stringify(selectedIDs);
        options.data = selectedIDs;
        options.contentType = "application/json";
        options.dataType = "json";
        options.success = function (msg) {
            alert(msg);
        };
        options.error = function () {
            alert("Error while deleting the records!");
        };
        $.ajax(options);

    });
});
 

публичный JsonResult AjaxMethod(строка[] Выбранные идентификаторы)
{
}`

Комментарии:

1. Можете ли вы подробнее рассказать о проблеме, с которой вы сталкиваетесь, о том, чего вы ожидаете, и о том, что вы уже пробовали?

2. вот мой метод действия контроллера

3. публичный JsonResult AjaxMethod(строка[] a) { }

4. Привет @RAKESHYADAV, Мой ответ помог вам решить вашу проблему? Если да,не могли бы вы, пожалуйста, принять в качестве ответа? Если нет,не могли бы вы, пожалуйста, продолжить, чтобы сообщить мне об этом? См.: Как принять в качестве ответа . Спасибо.

Ответ №1:

Вам нужно изменить свой js, как показано ниже:

 options.data = JSON.stringify(selectedIDs);
 

И обязательно добавьте [FromBody] перед своим параметром:

 [HttpPost]
public JsonResult AjaxMethod([FromBody]string[] selectedIDs) {
    return Json(selectedIDs);
}
 

Вот целая рабочая демонстрация:

Вид:

 <input type="checkbox" id="checkAll">Check All
<hr />
<input type="checkbox" class="checkBox" value="1">Item 1
<input type="checkbox" class="checkBox" value="2">Item 2
<input type="checkbox" class="checkBox" value="3">Item3
<button type="button" id="delete" >Delete</button>
@section Scripts
{
    <script>
        $("#checkAll").click(function () {
            $(".checkBox").prop('checked',
                $(this).prop('checked'));
        });

        $("#delete").click(function () {
            var selectedIDs = new Array();
            $('input:checkbox.checkBox').each(function () {
                if ($(this).prop('checked')) {
                    selectedIDs.push($(this).val());
                }
            });
            console.log(selectedIDs);
            var options = {};
            options.url = "/home/AjaxMethod";
            options.type = "POST";
            options.data = JSON.stringify(selectedIDs);
            //options.data = selectedIDs;
            options.contentType = "application/json";
            options.dataType = "json";
            options.success = function (msg) {
                alert(msg);
            };
            options.error = function () {
                alert("Error while deleting the records!");
            };
            $.ajax(options);

        });

    </script>
}
 

Контроллер:

 [HttpPost]
public JsonResult AjaxMethod([FromBody]string[] selectedIDs) {
    return Json(selectedIDs);
}
 

Результат:

введите описание изображения здесь