2011-11-29 131 views

回答

44

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

例如,ASP.NET自带的视图引擎开箱即用。这是视图有很多标签,如<% %><%: %>。它使用.aspx文件扩展名。

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

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

在SO上有一个很好的比较asp.net view engines

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

Razor引擎中有一些非常漂亮的扩展点。例如,您可以提供一个自定义视图基类,这是一个强大的概念,可以轻松地在正确的位置添加大量功能,而无需混淆您必须处理的所有细节。

我现在会去剃刀。

+0

你能告诉我(给我一个链接)我如何呈现ViewEngines离线? – gillyb

+1

@gillyb:你最好的选择是http://razorengine.codeplex.com/,它可以在ASP环境之外呈现Razor视图。 – mnemosyn

2

视图引擎是MVC用来从控制器查找和呈现视图的视图引擎。如果你对默认路由感到满意,你可能不需要改变任何东西,但可以说你想让你的共享文件通常位于root/views/shared中,而不是位于root/common中,那么定制的viewengine就是你会需要创建才能做到这一点。

在这里,您可以看到如何构建一个视图引擎:

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

视图引擎还负责渲染视图,但因为你刚开始学习MVC,你可能不会需要改变渲染功能只是

7

视图引擎是什么负责渲染您的视图,并将您的代码转换为光荣的HTML。因此,他们直接负责如何在视图中编写代码。

基本上有两个你需要关心的:ASPX和Razor。在我看来,Razor更加时尚和易于使用,只需在MVC3中支持即可。

例如,在ASPX代码块可能是这样的:

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

尽管剃刀相当于看起来就像这样:

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

在MVC中,视图引擎,你的浏览器和浏览器之间的工作方式是编译你查看里面的代码,以提供有效的HTML输出到浏览器中的一个。有许多可用的视图引擎,其中一些是以下几点:

  1. ASPX

  2. 剃刀

  3. 星火

  4. NHaml

  5. NDJango

  6. Hasic

  7. 抄网

  8. 贝尔维尤

  9. 夏普瓷砖

  10. 字符串模板

  11. 永击败

  12. SharpDOM

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

欲了解更多详情,您可以访问this article

1

视图引擎适用于渲染HTML网页浏览器或给用户的应用程序中。它可以包含HTML标签,服务器控件和一些编程语言。

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

1

在ASP.Net MVC中,视图引擎,你的观点和浏览器之间的工作原理是通过考虑您的view.There提供输出,以提供有效的HTML输出到浏览器有很多类型的视图引擎之一。

1)ASPX

2)剃刀

3)火花

4)NHaml

5)NDJango

6)Hasic

7)抄网

1

我在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窗体引擎命名空间是Web.Mvc.WebFormViewEngine
  • 这个视图引擎
  • 文件扩展名类似于Web窗体为:

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

  • 不支持TDD(测试驱动开发)。
  • Web窗体引擎不能防止XSS攻击手段,任何脚本在数据库中保存的 将被解雇,而渲染页面
  • 语法:<%:Html.ActionLink(“家”,“指数”)%>

Razor视图引擎:

  • 的Razor视图引擎是一种先进的视图引擎,可提供MVC 3.0及更高版本
  • ASPX视图的名称空间引擎是Web.Razor。
  • 该视图引擎的文件扩展名为.cshtml(Razor C#),用于视图, 部分视图,编辑器模板和布局页面。 .vbhtml(Razor VB.NET),用于视图,部分视图,编辑器模板和布局页面。
  • 支持TDD(测试驱动开发)。相比于Web表单引擎
  • 剃刀引擎是有点慢。
  • 剃刀引擎防止跨站脚本攻击(跨站点脚本攻击)指 它渲染,以查看前编码脚本或html标签等<,>。
  • 剃刀语法是很容易理解和干净得多比Web窗体 语法。剃须刀使用@符号让这样的代码为:

    @ Html.ActionLink(“家”,“指数”)

1

视图引擎呈现视图到HTML表单的浏览器。如果我们谈论的.Net框架的MVC应用程序,它支持以下2个视图引擎:

1 Razor视图引擎 2. Web窗体/ ASPX视图引擎

差异: Razor视图引擎使用布局,但鉴于ASPX引擎使用的母版页。

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

3. Razor视图引擎不是语言,它是标记语法。

4. @'符号在Razor Engine中用于编写代码。 @ Html.ActionLink(“Login”,“LoginView”) '<%:'分隔符用作起点,'%>'用作终点。您可以在ASPX引擎中编写它们之间的代码。

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

0

到目前为止,每个响应有关ASP.NET。如果你正在寻找的NodeJS,视图引擎,然后下面的一些是选项:

Jade (Pug) 
express-handlebars 
ejs 
React 

还有,我发现在https://github.com/expressjs/express/wiki#template-engines但上面的人似乎是我听到有关的那些他们的整个列表最。

相关问题