ASP. NET Базовый http пост [FromBody] сломан в 3.1, раньше работал в 2.2 - PullRequest
0 голосов
/ 26 марта 2020

У меня возникают всевозможные ошибки при миграции с ASP. NET Core 2.2 на 3.1.

Моя последняя ошибка - объект, который я получаю через сообщение Http, равен нулю.

Вот код, который получает объект, и в этом случае модель является нулевой.

[HttpPost]
public async Task<IActionResult> MyAction([FromBody] BoardMoveModel model)

Класс модели:

public class BoardMoveModel
{
    public int BoardId { get; set; }
    public int TicketId { get; set; }
    public int DestinationStatusId { get; set; }
    public int SourceStatusId { get; set; }
    public IEnumerable<int> SourceStatusList {get; set;}
    public IEnumerable<int> DestinationStatusList {get; set;}
}

И код Javascript :

        var data = {
            TicketId: el.id,
            DestinationStatusId: targetStatusId,
            SourceStatusId: sourceStatusId,
            SourceStatusList: sourceList,
            DestinationStatusList: destList
        };

        $.ajax({
            async: true,
            url: "/Area/Board/MyAction",
            type: "POST",
            contentType: "application/json; charset=utf-8",
            headers: {
                RequestVerificationToken:
                $('input:hidden[name="__RequestVerificationToken"]').val()
            },
            data: JSON.stringify(data)
        }).done(function(result) {

Вот фактическая JSON Полезная нагрузка:

             {
                 "TicketId":"150",
                 "DestinationStatusId":"5",
                 "SourceStatusId":"6",
                 "SourceStatusList":[],
                 "DestinationStatusList":["140","150"]
             }

1 Ответ

0 голосов
/ 26 марта 2020

Модель является нулевой, потому что она недопустима для привязки. В JSON вы передаете строковые значения, в то время как модель требует целых чисел. Измените либо, чтобы соответствовать, и это должно работать. По умолчанию привязка чувствительна к регистру, но это не должно быть проблемой для предоставленного вами кода.

Попробуйте отправить это как application / json body

{
    "TicketId":150,
    "DestinationStatusId":5,
    "SourceStatusId":6,
    "SourceStatusList":[],
    "DestinationStatusList":[140,150]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...