什么是ASP.Net MVC视图引擎?

时间:2009-05-12 14:32:36

标签: asp.net-mvc viewengine

关于ASP.Net MVC中的 View Engines 以及使用“自定义”而不是“默认”的问题,有很多关于SO的问题。对于我作为业余爱好程序员来说,术语“视图引擎”是新的,我无法理解它的含义。所以,我的问题是:

  1. 什么是View引擎?

  2. View Engine的功能是什么,MVC模式中扮演的角色是什么? (与1 ......密切相关)

  3. 程序员希望通过切换到其他View Engine来改变/避免默认View Engine的主要特征/属性是什么?

  4. 当开发人员选择使用不同于标准的其他视图引擎时,常见的其他视图引擎的主要优点是什么? (我已经多次看到“Spark View引擎”这个名字了,我打赌也有其他人)。

  5. 何时(在什么情况下)我想开发自己的View引擎?

  6. 在那里,我认为这就是我想问的问题(现在)。给我看View Engines 101! =)

2 个答案:

答案 0 :(得分:6)

“视图引擎”处理视图呈现为html,xml或创建它要发出的任何内容类型。在“MVC”中,它将是View(V)的一个方面。

不同的视图引擎具有不同的语法等,以管理渲染。使用另一个视图引擎的决定很可能是项目/程序员特定的。在某些情况下,他们可能会看到默认视图引擎的实际或感知限制;在其他情况下,它可能只是一个不同的设计目标或焦点。

就Spark而言,他们的重点是比默认的视图引擎更加简洁,尽可能保持类似HTML的语法,而不是放入ASP.NET脚本块。

作为最终用户,您唯一想要创建自己的视图引擎的时间可能永远不会。 ;)这不是一项轻率的任务,您可能最终会重新实现现有视图引擎中已存在的功能。

修改

  

行。 View.aspx文件也是如此   View Engine,或者是View Engine   一组有助于选择的课程   哪个View.aspx(或其他类型的   响应)应该呈现?怎么样   它有用吗?

MVC模式告诉您模型,视图和控制器将是单独的“事物”。在ASP.NET MVC中,默认视图引擎使用现有的ASP.NET框架,其中包括母版页,ASPX文件等.Spark做了类似的事情,但它是一个不同的引擎,所以它不能完全相同。因此,在一般意义上,视图文件不是特定于引擎的,但是特定文件,它们在磁盘上的布局及其内容特定于视图引擎。

答案 1 :(得分:1)

除了想要完全替换视图引擎(例如Spark)之外,您还可以创建自己的视图引擎,只是对默认视图引擎的行为进行一些小改动。您可以通过创建一个从默认引擎继承并覆盖某些行为的新视图引擎来完成此操作。

一个常见的例子是调整视图引擎在硬盘驱动器上查找.aspx文件的位置。例如,您可能希望创建一个视图引擎,该引擎根据用户是否在移动设备上自动切换使用哪个view.aspx文件。

请参阅Mobile Web Sites with ASP.NET MVC and the Mobile Browser Definition File以获得一个非常好的示例实现。

<强>更新

Scott刚刚发布了updated ViewEngine implementation,与上面提到的初始实施相比有了重要的改进。