微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.Net Core 3.1 FromBody获取派生对象的列表

如何解决.Net Core 3.1 FromBody获取派生对象的列表

我正在创建一个.Net Core 3.1 Web Api项目,其中有以下代码

class Person{
    string name;
    int age;
}

class Student: Person{
    string grade;
}

class Teacher: Person{
    List<string> courses;
}

[HttpPost] 
savePersonList([FromBody] List<Person> personList){
    // Do something with the personList;
}

调用api savePersonList并将学生和教师列表传递给它。但是在后端,人员列表仅给我“人员”对象,“教师”和“学生”的属性不存在。

我该怎么做才能获取列表的完整属性。应该对此问题的解决方案进行概括,因为我还有其他的控制器也获得了其他类型的对象。

谢谢。

解决方法

您可能会误解模型绑定。可以传递基类,然后将其与派生类一起接收,但不能传递派生类,然后与基类一起接收。

对于您的方案,您可以创建一个视图模型,然后可以传递所需的每个对象:

public class ViewModel : Person
{
    public string grade { get; set; }
    public List<string> courses { get; set; }
}

控制器:

[HttpPost]
public void Post([FromBody] List<ViewModel> personList)
{
     //do your stuff...
}

结果:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。