强类型视图 vs 动态类型视图

5

我开始使用ASP .NET MVC。根据我的观察,有两种方法可以将数据传递给视图:

  1. 创建一个继承ViewPage并将动态对象传递给视图。
  2. 创建一个继承ViewPage的强类型视图,并将自定义视图模型类的实例传递给视图。

每种方法的优缺点是什么?


我认为,如果你不问“哪个更好”,而只是询问其优缺点,那么争论会减少。 - Filip Ekberg
2个回答

4

尽可能使用强类型视图,以便您确切地知道作为模型传递给该视图的数据是什么。如果使用动态类型,则无法始终了解数据将是什么,并且如果事情发生变化,可能会导致运行时错误。


强类型视图的其他优点包括:在视图编译时进行代码验证和智能感知。 - Sedat Kapanoglu

3

根据 JOSH DOOLAN 的说法,强类型视图更适用于处理复杂类型数据。例如,我有一个人的类:

Public Class Person

{
 String _name;
 String _age;
 Pet _pet;

 // gets & sets below..etc
 }

如果您有一个使用情况,希望将这个特定的类绑定到一个表单(以创建一个“新”人),那么这将是相当直接的,直到你需要处理复杂类型宠物。
您只需将该类与特定视图强类型化,然后在该视图中调用一个模板或强类型化为“Pet”的视图文件即可。要将复杂类型分配给模板/视图,只需使用html mvc助手 Html.ControlFor。在这种特定情况下,因为您不是处理像文本框这样的简单html控件,所以您将使用:
Html.EditorFor(model => model.Pet, "Pet")  

在这里,您可以看到将视图模型“pet”的实例放入名为“Pet”的强类型视图中,在原始视图表单提交时获取完全填充的视图模型,这是一种简化和封装更复杂、更大规模网站数据的非常有效的方式。

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