如何POST / PUT Web API asp net core一对多关系?

时间:2016-07-19 22:44:01

标签: c# asp.net asp.net-web-api asp.net-core

Web API的新手,也是C#的新手,所以还在努力学习。

我已经到了可以显示这个

的地步
 [{"name":"myname","birthday":"11111","nickname":"mynickname","phoneNumbers":[{"type":"phone","phone":"work","number":"1231231234"},{"type":"phone","phone":"cell","number":"4564654567"}]}]

但是当我尝试更新“数字”时,它会将“phoneNumbers”更改为null,当我尝试发布新内容时也是如此。

所以现在我不确定问题出在哪里...... 存储库?

 public void Add(Contacts item)
 {
     ContactList.Add(item);
 }
 public void Update(Contacts item)
 {
     var itemToUpdate = ContactList.SingleOrDefault(a => a.Birthday == item.Birthday);
     if (itemToUpdate != null)
     {
         itemToUpdate.Name = item.Name;
         itemToUpdate.Birthday = item.Birthday;
         itemToUpdate.Nickname = item.Nickname;
         itemToUpdate.PhoneNumbers = item.PhoneNumbers;
     }

还是我的控制器?

    [HttpPost]
    public IActionResult Create([FromBody] Contacts item)
    {
        //
        ContactsRepo.Add(item);
        return CreatedAtRoute("GetContacts", new { Controller = "Contacts", id = item.Birthday }, item);

    }

    [HttpPut("{id}")]
    public IActionResult Update(string id, [FromBody] Contacts item)
    {
        //
        ContactsRepo.Update(item);
        return new NoContentResult();
    }

还是完全不同的东西?

编辑:联系班级

public class Contacts
{
    public string Name { get; set; }
    public string Birthday { get; set; }
    public string Nickname { get; set; }
    public List<PhoneNumber> PhoneNumbers { get; set; }
}

0 个答案:

没有答案