什么是视图引擎?它实际上做了什么?

时间:2011-11-29 09:32:52

标签: c# asp.net asp.net-mvc viewengine

我开始学习ASP.NET MVC3。

因此,在阅读在线和书籍教程时,我经常遇到这个术语“view engine”。我不知道它是什么。

它实际上做了什么?

为什么这对我来说很重要?

11 个答案:

答案 0 :(得分:51)

视图引擎负责从您的视图创建HTML。视图通常是HTML和编程语言的混合。其中大部分背后的模式称为two-step view

例如,ASP.NET自带了自己的视图引擎。这就是视图包含许多标记的视图,例如<% %><%: %>。它使用.aspx文件扩展名。

使用ASP.NET MVC3,添加了另一个开箱即用的视图引擎Razor,它具有更吸引人的语法,例如: <div>@Model.UserName</div>

视图引擎的选择很重要,因为视图引擎的功能集非常不同。例如,有些人支持渲染PDF文件;有些不能在Web上下文之外使用(对于旧的ASP.NET视图引擎也是如此),而其他人可以(例如Razor)。当您想要以与构建视图相同的方式创建HTML电子邮件时,“离线”视图呈现会派上用场,而这些电子邮件应该从后台工作人员而不是Web应用程序发送。

这里对asp.net view engines进行了很好的比较。

好消息是您可以在ASP.NET MVC中并行使用多个视图引擎,但除非必要,否则我不会推荐它。

Razor引擎中已经有一些非常好的扩展点了。例如,您可以提供一个自定义视图基类,这是一个强大的概念,可以很容易地在正确的位置添加许多功能,而不必弄乱您必须应对的所有细节。

我现在要去Razor。

答案 1 :(得分:8)

视图引擎负责呈现您的视图,并将您的代码转换为光荣的HTML。因此,他们直接负责您需要在视图中编写代码。

基本上有两个你需要关心的:ASPX和Razor。在我看来,Razor更加流畅和易于使用,仅以MVC3支持为代价。

例如,ASPX中的代码块可能如下所示:

<% foreach(var item in Model) { %>
    <tr>
        <td><%: item.Name %></td>
    </tr>
<% } %>

而Razor等效物将如下所示:

@foreach(var item in Model) {
    <tr>
        <td>@item.Name</td>
    </tr>
}

答案 2 :(得分:4)

视图引擎是MVC用于查找和呈现您从控制器请求的视图的内容。如果您对默认路由感到满意,您可能不需要更改任何内容,但是假设您希望将共享文件放在root / views / shared中,而不是位于root / common中,自定义视图引擎就是您的意思需要创造才能做到这一点。

在这里您可以看到如何构建一个viewengine:

http://coderjournal.com/2009/05/creating-your-first-mvc-viewengine/

视图引擎也负责渲染视图,但是当你刚刚学习MVC时,你可能不需要改变渲染功能

答案 3 :(得分:4)

在MVC中,View引擎是在View和浏览器之间工作的引擎,通过编译View中的代码为浏览器提供有效的HTML输出。有许多可用的视图引擎,其中一些是:

  1. ASPX

  2. 剃刀

  3. 火花

  4. NHaml

  5. NDJango

  6. Hasic

  7. 抄网

  8. 贝尔维尤

  9. Sharp Tiles

  10. 字符串模板

  11. Wing Beats

  12. SharpDOM

  13. 目前大多数开发人员更喜欢使用Razor视图引擎,因为它提供了非常方便的编程方式。所有这些视图引擎都可能不支持ASP.NET MVC。

    有关详细信息,请访问this article

答案 4 :(得分:3)

模板/视图引擎使您能够在应用程序中使用静态模板文件。在运行时,模板引擎用实际值替换模板文件中的变量,并将模板转换为发送给客户端的 HTML 文件。这种方法可以更轻松地设计 HTML 页面。

答案 5 :(得分:2)

View Engine在应用程序内部工作,用于将HTML页面呈现给浏览器或用户。它可以包含HTML标记,服务器控件和一些编程语言。

Razor是MVC4框架的首选视图引擎。

答案 6 :(得分:2)

在ASP.Net MVC中,View引擎可以在您的视图和浏览器之间工作,通过考虑视图提供的输出,为您的浏览器提供有效的HTML输出。有许多类型的视图引擎。

1)ASPX

2)剃刀

3)火花

4)NHaml

5)NDJango

6)Hasic

7)抄网

答案 7 :(得分:2)

我在http://questionbox.in/view-engine-asp-net-mvc-razor-view-engine-asp-net-mvc-web-form-aspx-view-engine-asp-net-mvc/

上阅读了一篇描述性帖子

视图引擎可以将视图中的HTML呈现给浏览器。

ASP.NET MVC支持许多视图引擎,但使用最广泛的视图引擎是

  • Web表单/ ASPX视图引擎。
  • 剃刀视图引擎。

Web表单视图引擎/ ASPX视图引擎:

  • Web窗体视图引擎/ ASPX视图引擎是默认的视图引擎 对于Asp.net MVC项目。它可以从MVC 1.0
  • 获得
  • Web Form Engine的名称空间是Web.Mvc.WebFormViewEngine
  • 此View Engine的文件扩展名与Web Form类似:

.aspx,对于像Web窗体页面一样的视图。 .ascx,部分视图&amp;编辑模板就像用户控件一样。 .master,用于布局和母版页,就像Web窗体中的母版页一样。

  • 不支持TDD(测试驱动开发)。
  • Web Form Engine不会阻止XSS攻击意味着保存任何脚本 在渲染页面时将在数据库中触发
  • 语法:&lt;%:Html.ActionLink(“主页”,“索引”)%&gt;

Razor View Engine:

  • Razor View Engine是MVC提供的高级视图引擎 3.0及更高版本
  • ASPX视图引擎的命名空间是Web.Razor。
  • 此View Engine的文件扩展名为.cshtml(Razor C#),适用于Views, 部分视图,编辑器模板和布局页面。 .vbhtml(剃刀 VB.NET),用于视图,部分视图,编辑器模板和布局页面。
  • 支持TDD(测试驱动开发)。
  • 与Web表单引擎相比,Razor Engine有点慢。
  • Razor Engine可防止XSS攻击(跨站点脚本攻击) 它编码脚本或html标签,如&lt;,&gt;在渲染之前。
  • Razor语法比Web Form易于理解和清晰 句法。 Razor使用@符号来生成如下代码:

    @ Html.ActionLink(“主页”,“索引”)

答案 8 :(得分:2)

View Engine将视图呈现为HTML表单到浏览器。如果我们在.Net Framework中讨论MVC应用程序,它支持以下2个视图引擎:

<强> 1。剃刀视图引擎 的 2。 Web窗体/ ASPX视图引擎

差异: 1。 Razor View Engine使用布局,但ASPX视图引擎使用母版页。

2。 Razor View Engine使用部分页面,但ASPX视图引擎使用Web用户控件。

3. Razor视图引擎不是一种语言,它是Markup语法。

4. @'符号在Razor Engine中用于编写代码。 @ Html.ActionLink(“登录”,“LoginView”) '&lt;%:'分隔符用作起点,'%&gt;'用作终点。您可以在ASPX Engine中编写它们之间的代码。

5. Razor View Engine具有.cshtml(带C#)和.vbhtml(带VB)扩展,可用于视图,布局和部分视图。 ASPX View Engine具有类似于简单Web应用程序的扩展,例如用于视图的.aspx,用于UserControls的.acsx和用于母版页的.master。

答案 9 :(得分:1)

到目前为止,每个响应都与ASP.NET有关。如果您正在寻找nodejs的视图引擎,那么以下某些选项是:

""

我在https://github.com/expressjs/express/wiki#template-engines找到了一整套清单,但上面的清单似乎是我听到的最多。

答案 10 :(得分:0)

两个视图引擎:

ASPX

ASPX视图引擎,服务器端脚本包含在[%%]之间 .ASPX是它的延伸。

剃刀

Razor我们使用@。 可以在HTML和代码之间切换。 Razor查看扩展名.CSHTML和.VBHTML