15

关于 ASP.Net MVC 中的视图引擎以及关于使用“自定义”而不是“默认”引擎的SO 存在很多问题。对于我作为一个业余程序员来说,“视图引擎”这个词是新的,我一直无法理解它的含义。所以,我的问题是:

  1. 什么是视图引擎?

  2. 视图引擎是做什么的,它在 MVC 模式中扮演什么角色?(与 1...密切相关)

  3. 程序员希望通过切换到不同的视图引擎来更改/避免的默认视图引擎的主要特征/属性是什么?

  4. 当开发人员选择使用与标准不同的视图引擎时,他们所追求的其他常见视图引擎的主要好处是什么?(我已经多次看到“Spark View Engine”这个名字,我敢打赌还有其他人)。

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

在那里,我想这就是我想问的(现在)。给我查看引擎 101!=)

4

2 回答 2

6

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

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

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

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

编辑

好的。那么 View.aspx 文件是 View Engine 的一部分,还是 View Engine 是一组帮助选择应呈现的 View.aspx(或其他类型的响应)的类?它是如何工作的?

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

于 2009-05-12T15:07:53.557 回答
1

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

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

请参阅使用 ASP.NET MVC 的移动网站和移动浏览器定义文件,以获得一个非常好的示例实现。

更新:

Scott 刚刚发布了一个更新的 ViewEngine 实现,与上面链接的初始实现相比,它具有重要的改进。

于 2009-05-12T15:12:38.310 回答