2010-11-05 99 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提供了許多有用的工具,以協助調查對象的框架。