ASP.NET Web API将复杂对象发送到前端

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

我一直试图在Google和这里搜索是否存在类似于我的问题,但大多数问题与我想要发生的情况相反。

所以我有一个像这样的对象:

class MyObject
{
    int SomeID {get; set;}
    string SomeName {get; set;}
    List<AnotherObjectContainingIDAndString> {get; set;}
}

所以在创建我的控制器并填满我的对象后,我尝试发送它,当我通过Postman检查时,我获得了除List a之外的所有属性。我的问题是,如果这是可能的,或者如果我无法在对象中发送数组?

以下是我的控制器在一些上下文中的样子:

[HttpGet("{id}"]
public async Task<ActionResult<MyObj>> GetById(int id)
{
    var myObj = await _context.MyObjs.Where(t => t.Id == id).SingleOrDefaultAsync();
    if (myObj == null)
    {
        return NotFound();
    }
    List<ObjectDescribedInPreviousCodeBlock> myList = new List<ObjectDescribedInPreviousCodeBlock>();
    //Fill the list up
    var toSendOver = new MyObject();
    //Assign the properties to toSendOver
    return toSendOver;
}
c# asp.net-core asp.net-core-webapi
3个回答
2
投票

尝试装饰您的类以使用以下序列化:

 [DataContract]
 class MyObject
 {
      [DataMember]
      int SomeID { get; set;}
      [DataMember]
      string SomeName { get; set;}
      [DataMember]
      List<AnotherObjectContainingIDAndString> { get; set;}
 }   

0
投票

您通常可以将模型传递给视图,但首先必须初始化列表变量。

  class MyObject
  {
    public MyObject()
    {
      ListAnotherObjectContainingIDAndString = new List<AnotherObjectContainingIDAndString>();
    }

    int SomeID { get; set; }
    string SomeName { get; set; }
    List<AnotherObjectContainingIDAndString> ListAnotherObjectContainingIDAndString { get; set; }
  }

0
投票

编译是不可能的(你不能显示实际代码,所以如果发布实际代码,你可能会遇到一些其他简单错误)

List<AnotherObjectContainingIDAndString> {get; set;}

它缺少一个属性名称,例如

List<AnotherObjectContainingIDAndString> ListOfItems {get; set;}

此外,您需要将创建的列表分配给对象:

toSendOver.ListOfItems = myList;

最后,你将返回一个MyObject,它与你的动作签名不同,表明返回的是ViewLessonVM。虽然有时框架会映射属性,但我认为这不会对返回起作用。

© www.soinside.com 2019 - 2024. All rights reserved.