2010-11-05 102 views
2

我从书中得到了这行代码。我不明白怎么会有人知道controller.List().ViewData.Model可能被称为IList?IList类型演员问题

var people = controller.List().ViewData.Model as IList<Person>; 

回答

1

你有什么是对ASP.NET MVC控制器的调用,但不是使用它来渲染视图,而是直接访问ViewData。

通常在ASP.NET MVC中,您将为您的视图创建一个类型视图,它将继承System.Web.Mvc.ViewPage<T>,在这种情况下,它将是System.Web.Mvc.ViewPage<IList<Person>>。一旦你创建了这种类型的视图,在视图中你知道ViewData.ModelIList<Person>类型。

您发布的电话通常用于单元测试控制器。在这种情况下,您可以直接调用控制器方法并获取其中包含数据的ViewResult。在编写单元测试时,您知道ViewData.Model的类型为IList<Person>,因为这是合同 - 这是单元测试的目的,用于验证控制器是否生成了正确类型的模型并且具有正确的数据。

1

你必须知道的对象模型,在大多数情况下,你所熟悉的你正在使用和IDE提供了许多有用的工具,以协助调查对象的框架。