отправить список в контроллер MVC с помощью AJAX - PullRequest
0 голосов
/ 26 октября 2018

У меня есть список, который выглядит следующим образом

List

Я хочу отправить этот список в мой контроллер,

IЯ использую AJAX-вызов для отправки данных со стороны клиента на серверную

здесь мой AJAX-вызов

    $.ajax({
        url: '/Main/updateTripundHoliday',
        data: d.weekendLeave,
        type: "GET",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (response) {

        }
    });

и мой метод в контроллере

    public bool updateHoliday(List<Holidaysclass> data)
    {
        for (var i = 0; i < data.Count(); i++)
        {
            insertHolidays(data.ElementAt(i).Date, data.ElementAt(i).Day, data.ElementAt(i).HolidayName, data.ElementAt(i).isActive, data.ElementAt(i).currentYear, data.ElementAt(i).isHolidayWeekend, data.ElementAt(i).OfficialID);
        }
        return true;
    }

здесь мой List<Holidaysclass> data показывает ноль

что я могу сделать здесь?

Ответы [ 5 ]

0 голосов
/ 26 октября 2018

попробуйте это:

$.ajax({
        url: '/Main/updateHoliday',
        data: {list: d.weekendLeave},
        type: "POST",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (response) {

        }
    });

[HttpPost]    
public bool updateHoliday(List<Holidaysclass> list)
0 голосов
/ 26 октября 2018

Вы не можете размещать данные в запросе на получение.Вместо этого вам нужно использовать запрос типа POST .Вот ваш обновленный запрос.

$.ajax({
        url: '/Main/updateTripundHoliday',
        data: d.weekendLeave,
        type: "POST",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (response) {

        }
    });

Также ваше действие должно иметь [HttpPost] аннотацию.

0 голосов
/ 26 октября 2018

Для отправки данных из браузера на контроллер необходимо использовать тип POST, а затем передать data внутри вызова ajax. Вы можете напрямую отобразить свой entites в действии.

 $.ajax({
        url: '/Main/updateTripundHoliday',
        data: d.weekendLeave,
        type: "POST",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (response) {

        }
    });

и в контроллере положить HttpPost Аннотация данных

 [HttpPost]
 public bool updateHoliday(List<Holidaysclass> data)
    {
        for (var i = 0; i < data.Count(); i++)
        {
            insertHolidays(data.ElementAt(i).Date, data.ElementAt(i).Day, data.ElementAt(i).HolidayName, data.ElementAt(i).isActive, data.ElementAt(i).currentYear, data.ElementAt(i).isHolidayWeekend, data.ElementAt(i).OfficialID);
        }
        return true;
    }
0 голосов
/ 26 октября 2018

Вы можете сделать это так:

$(document).ready(function () {
    var things = [
        { id: 1, color: 'yellow' },
        { id: 2, color: 'blue' },
        { id: 3, color: 'red' }
    ];      

    things = JSON.stringify({ 'things': things });

    $.ajax({
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        type: 'POST',
        url: '/Home/PassThings',
        data: things,
        success: function () {          
            $('#result').html('"PassThings()" successfully called.');
        },
        failure: function (response) {          
            $('#result').html(response);
        }
    }); 
});

Пожалуйста, перейдите по этой ссылке для получения дополнительной информации: ссылка

0 голосов
/ 26 октября 2018

Используя метод ajax get, мы не можем отправлять данные с клиента на сервер, это не лучший способ. попробуйте с помощью метода POST отправить данные с клиента на сервер.

Ссылка: https://api.jquery.com/jquery.post/

 $.ajax({
    url: '/Main/updateTripundHoliday',
    data: d.weekendLeave,
    type: "POST",
    ......
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...