【发布时间】:2012-07-25 10:51:47
【问题描述】:
我有以下问题(简化)。
我有一份狗的名单:
public List<Dog> dogs { get; set; }
我目前通过在视图中将其转换为 json 对象来访问此列表:
@(new HtmlString(@Json.Encode(@ViewBag.dogs)))
然后我使用 javascript 遍历这个 json 对象并将其显示在页面上。
我想将汽车添加到此列表中。
但是,由于列表是强类型的 dogs 列表,我的第一个想法是创建列表,因为 dogs 和 cars 有一个共同点,它们都是对象。
当我尝试将我的狗列表更改为 objects 列表时,我收到以下错误
Cannot implicitly convert type 'System.Collections.Generic.List<object>' to System.Collections.Generic.List<dog>
我对此进行了研究,发现 this 问题对我没有多大帮助,只是告诉我我无法获得狗和汽车的清单。然而,就我的目的而言,这并不合适。我需要我的列表同时包含狗和汽车,以便我可以在我的应用程序中访问它们。
我预计会被建议的一个解决方案是我有两个单独的列表,并发出两个单独的 ajax 请求。但是,我需要按特定顺序(基于它们的创建时间)混合汽车和狗,这样解决方案并不理想。
简而言之,我想知道实现这一目标的最佳方法是什么。也许我走错了方向,所以如果有意义的话,我不反对做一些完全不同的事情。
一如既往地感谢您的帮助!
编辑:我已经尝试了演员阵容,而且效果很好。但是,我需要访问 dog 的属性(我们称之为“毛皮”),我似乎无法做到这一点(我需要再次施法吗?)
'object' does not contain a definition for 'fur'
【问题讨论】:
-
在系统中的某个地方,您仍然将
dogs属性定义为List<Dog>的类型。否则它应该可以工作。 -
@mellamokb 某处?你是说他在哪里宣布狗? ;)
-
@Mansfield 是的,您需要转换回
Dog或Car才能使用对象的属性。但考虑一下:你怎么知道列表中的任意object是Dog还是Car?
标签: c# asp.net-mvc json list object