我希望更新一个名为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; }
}
}
邮差的截图:
通过使用我通过创建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
}