如何修复Postman中PUT json发送的空对象?

问题描述 投票:1回答:1

我希望更新一个名为MusicListListItem的实体,从邮递员的身体中放入json。

当我调试时,我发现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,我选择了JSON(application / json)进入Postman的Body部分:

{
    "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方法从Postman的PUT请求体中接收MusicListListItem对象,但它以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

asp.net-core-mvc asp.net-core-2.1
1个回答
0
投票

通过使用我通过创建GETMusicListListItemById方法获得的更简单的MusicListListItem json对象,我能够成功地PUT到API:

{
"musicListListItemId": 4,
"musicListId": 1,
"listItemId": 1019,
"musicList": null,
"listItem": null,
"rank": 2,
"comments": null,
"imageUrl": null,
"dateModified": "0001-01-01T00:00:00",
"deleted": false
}
© www.soinside.com 2019 - 2024. All rights reserved.