我一直试图在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;
}
尝试装饰您的类以使用以下序列化:
[DataContract]
class MyObject
{
[DataMember]
int SomeID { get; set;}
[DataMember]
string SomeName { get; set;}
[DataMember]
List<AnotherObjectContainingIDAndString> { get; set;}
}
您通常可以将模型传递给视图,但首先必须初始化列表变量。
class MyObject
{
public MyObject()
{
ListAnotherObjectContainingIDAndString = new List<AnotherObjectContainingIDAndString>();
}
int SomeID { get; set; }
string SomeName { get; set; }
List<AnotherObjectContainingIDAndString> ListAnotherObjectContainingIDAndString { get; set; }
}
编译是不可能的(你不能显示实际代码,所以如果发布实际代码,你可能会遇到一些其他简单错误)
List<AnotherObjectContainingIDAndString> {get; set;}
它缺少一个属性名称,例如
List<AnotherObjectContainingIDAndString> ListOfItems {get; set;}
此外,您需要将创建的列表分配给对象:
toSendOver.ListOfItems = myList;
最后,你将返回一个MyObject
,它与你的动作签名不同,表明返回的是ViewLessonVM
。虽然有时框架会映射属性,但我认为这不会对返回起作用。