ASP.NET MVC中什么是强类型视图?
答案 0 :(得分:34)
这是一个派生自System.Web.Mvc.ViewPage<TModel>
的aspx页面。据说此视图强类型为TModel
类型。因此,此视图中有Model属性,类型为TModel
,允许您直接访问模型的属性,如下所示:
<%= Model.Name %>
<%= Model.Age %>
如果您的aspx页面派生自System.Web.Mvc.ViewPage
,您需要从ViewData
中提取值,该视图将不再了解TModel
类型:
<%= (string)ViewData["Name"] %>
<%= (int)ViewData["Age"] %>
甚至更糟:
<%= ((SomeModelType)ViewData["model"]).Name %>
并且此类代码中没有编译时安全性。
另请注意,强类型部分(ASCX)的ViewUserControl<TModel>
对应部分。
答案 1 :(得分:11)
强类型视图用于呈现特定类型的模型对象,而不是使用常规ViewData结构。通过指定数据类型,您可以访问模型类的IntelliSense。
答案 2 :(得分:3)
这是一个视图,它指定传递给它的对象的类型作为其模型 - 因此它不是从ViewPage
继承的视图,而是从ViewPage<T>
继承,其中T
是模型的类型。