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

41

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

3个回答

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> 对应物。


12

强类型视图用于呈现特定类型的模型对象,而不是使用一般的ViewData结构。通过指定数据类型,您可以访问模型类的智能感知功能。


如果视图使用多个模型类的字段或属性,该怎么办? - Abid Ali
2
@AbidAli 创建一个单独的“视图模型”,其成员是多个模型类的实例。例如,如果您有ModelAModelBModelC,那么您将拥有一个视图模型:public class MyViewModel { public ModelA ModelA { get; set; } public ModelB ModelB { get; set; } public ModelC ModelC { get; set; }} - Aaron Blenkush

3

这是一种指定传递给它的对象类型作为其模型的视图 - 因此,它不是从ViewPage继承的视图,而是从ViewPage<T>继承的视图,其中T是模型的类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接