什么是ASP.NET MVC中的强类型视图?
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>
对应物。
强类型视图用于呈现特定类型的模型对象,而不是使用一般的ViewData结构。通过指定数据类型,您可以访问模型类的智能感知功能。
这是一种指定传递给它的对象类型作为其模型的视图 - 因此,它不是从ViewPage
继承的视图,而是从ViewPage<T>
继承的视图,其中T
是模型的类型。
ModelA
、ModelB
和ModelC
,那么您将拥有一个视图模型:public class MyViewModel { public ModelA ModelA { get; set; } public ModelB ModelB { get; set; } public ModelC ModelC { get; set; }}
。 - Aaron Blenkush