我从一本书中得到了这行代码。我不明白有人会怎么知道controller.List().ViewData.Model
可以被称为IList?
var people = controller.List().ViewData.Model as IList<Person>;
答案 0 :(得分:1)
您必须了解对象模型,在大多数情况下,您熟悉所使用的框架,IDE提供了许多有用的工具来协助对象调查。
答案 1 :(得分:1)
您所拥有的是对ASP.NET MVC控制器的调用,而不是使用它来呈现视图,而是直接访问ViewData。
通常在ASP.NET MVC中,您将为视图创建一个类型视图,该视图将从System.Web.Mvc.ViewPage<T>
继承,在这种情况下,它将是System.Web.Mvc.ViewPage<IList<Person>>
。创建此类型视图后,您会在视图中知道ViewData.Model
属于IList<Person>
类型。
您发布的呼叫通常用于对控制器进行单元测试。在这种情况下,您直接调用控制器方法并返回其中包含数据的ViewResult
。在编写单元测试时,您知道ViewData.Model
类型为IList<Person>
',因为这是合同 - 这是单元测试的用途,用于验证控制器是否生成了正确类型的模型和有正确的数据。