Как я могу исправить нулевой объект, отправляемый из PUT json в Postman? - PullRequest
0 голосов
/ 13 февраля 2019

Я помещаю json в тело от почтальона в надежде обновить сущность с именем MusicListListItem.

Когда я отлаживаю, я обнаружил, что элемент MusicListListItem равен null.

Вот мой метод на моем MusicListsController:

    [HttpPut("{id}")]
    [Route("API/[Controller]/UpdateMusicListListItem")]
    public async Task<IActionResult> PutMusicListListItem(int id, [FromBody]MusicListListItem item)
    {

        MusicListListItem myMLLI = item; 
        if (id != item.MusicListListItemId)
        {
            return BadRequest();
        }

        _context.Entry(item).State = EntityState.Modified;
        await _context.SaveChangesAsync();

        return NoContent();
    }

, а вот json, который я поместил в секцию Body Postman с выбранным JSON (application / json):

{
    "musicListListItemId": 4,
    "musicListId": 1,
    "listItemId": 1019,
    "listItem": {
        "artist": null,
        "listItemId": 1019,
        "title": "test33_tryAddRelation",
        "dateCreated": "0001-01-01T00:00:00",
        "musicListListItem": []
    },
    "rank": 2,
    "comments": null,
    "imageUrl": null,
    "dateModified": "0001-01-01T00:00:00",
    "deleted": false
}

Я ожидаю, что метод API-контроллера PutMusicListListItem получит объект MusicListListItem из тела запроса PUT Почтальона, но он возвращается как null.

В конечном итоге я получаю

NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта.

ошибка.

Здесьэто дополнительная информация, которая была запрошена:

Определение объекта musicListListItem:

using MusicListsApp.Domain;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text;

namespace Domain
{
    public class MusicListListItem
    {
        public int MusicListListItemId { get; set; }

        public int MusicListId { get; set; }

        public int ListItemId { get; set; }

        public virtual MusicList MusicList { get; set; }

        public virtual ListItem ListItem { get; set; }

        public int Rank { get; set; }

        public string Comments { get; set; }

        public string ImageUrl { get; set; }

        public DateTime DateModified { get; set; }

        public bool Deleted { get; set; }
    }
}

Снимок экрана Почтальона:

enter image description here

1 Ответ

0 голосов
/ 13 февраля 2019

Мне удалось успешно ПОСТАВИТЬ в API с помощью более простого объекта json MusicListListItem, который я получил, создав метод GETMusicListListItemById:

{
"musicListListItemId": 4,
"musicListId": 1,
"listItemId": 1019,
"musicList": null,
"listItem": null,
"rank": 2,
"comments": null,
"imageUrl": null,
"dateModified": "0001-01-01T00:00:00",
"deleted": false
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...