什么是ASP.NET MVC中的强类型视图

Fra*_*dal 41 asp.net-mvc view

什么是ASP.NET MVC中的强类型视图?

Dar*_*rov 34

它是一个源自的aspx页面System.Web.Mvc.ViewPage<TModel>.据说该视图是强类型的TModel.因此,在此视图中有一个Model属性,它是一个类型TModel,允许您直接访问模型的属性,如下所示:

<%= Model.Name %>
<%= Model.Age %>
Run Code Online (Sandbox Code Playgroud)

好像你从System.Web.Mvc.ViewPage你派生的aspx页面需要从ViewData视图中提取值不再知道TModel类型:

<%= (string)ViewData["Name"] %>
<%= (int)ViewData["Age"] %>
Run Code Online (Sandbox Code Playgroud)

甚至更糟:

<%= ((SomeModelType)ViewData["model"]).Name %>
Run Code Online (Sandbox Code Playgroud)

并且在这样的代码中没有编译时安全性.

另请注意ViewUserControl<TModel>,强类型部分(ASCX)的对应部分.


jco*_*jco 11

强类型视图用于呈现特定类型的模型对象,而不是使用常规ViewData结构.通过指定数据类型,您可以访问模型类的IntelliSense.

  • @AbidAli 创建一个单独的“视图模型”,其成员是多个模型类的实例。例如,如果你有 `ModelA`、`ModelB` 和 `ModelC`,那么你将有一个视图模型: `public class MyViewModel { public ModelA ModelA { get; 放; } 公共模型 B 模型 B { 得到;放; }公共模型C模型C{得到;放; }}`。 (2认同)