强类型视图与动态类型视图

时间:2011-02-10 10:20:48

标签: asp.net-mvc

我开始使用ASP .NET MVC。而且,正如我所看到的,有两种方法可以传递数据进行查看:

  1. 创建继承ViewPage的View并将动态对象传递给视图。
  2. 创建强类型视图,继承ViewPage,并将自定义视图模型类的实例传递给视图。
  3. 每个人的利弊是什么?

2 个答案:

答案 0 :(得分:4)

始终尽可能使用强类型视图,以便准确了解作为模型传递给该视图的数据。如果你使用动态,你实际上并不总是知道数据是什么,如果事情发生变化,可能会导致运行时错误。

答案 1 :(得分:3)

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

Public Class Person

{
 String _name;
 String _age;
 Pet _pet;

 // gets & sets below..etc
 }

如果你有一个用例,你想要将这个特定的类绑定到一个表单(创建一个“新”的人),那么在你进入复杂类型Pet之前,它会非常简单。

您要做的只是强烈地将人物键入特定视图,然后在该视图中调用强类型为“Pet”的模板或视图文件。要将复杂类型分配给模板/视图,只需使用html mvc helpers Html.ControlFor。在这个特定的例子中,因为你没有处理像文本框这样的简单html控件,你可以使用:

Html.EditorFor(model => model.Pet, "Pet")  

在这里,您可以看到,您将视图模型“pet”的实例放入名为“Pet”的强类型视图中,以便在提交原始视图表单时返回完全数据填充的视图模型。

这是在更复杂和更大规模的网站中简化和封装数据的一种非常强大的方法。