什么是视图引擎? 它究竟做了什么?
我开始学习ASP.NET MVC3。
所以,在网上和书本上阅读教程时,我经常碰到这个术语“查看引擎” 。 我不知道是什么
它究竟做了什么?
为什么这对我来说很重要?
视图引擎负责从您的视图创buildHTML。 视图通常是HTML和编程语言的混合。 大多数这种模式被称为两步法 。
例如,ASP.NET自带的视图引擎开箱即用。 这是视图中有许多标签(如<% %>
和<%: %>
。 它使用.aspx
文件扩展名。
在ASP.NET MVC3中,增加了另一个开箱即用的视图引擎Razor ,它具有更吸引人的语法,例如<div>@Model.UserName</div>
。
视图引擎的select是非常重要的,因为视图引擎的特征集是非常不同的。 有些支持渲染为PDF文件,例如; 有些不能在web上下文之外使用(对于旧的ASP.NET视图引擎也是如此),而另一些则可以(例如Razor)。 当您想要创buildHTML电子邮件时,“离线”显示视图就会派上用场。这些电子邮件应该是从后台工作人员而不是Web应用程序发送的。
在这里有一个很好的比较asp.net视图引擎 。
好消息是,您可以在ASP.NET MVC中并行使用多个视图引擎,但除非必要,否则我不会推荐它。
Razor引擎中有一些非常漂亮的扩展点。 例如,您可以提供自定义视图基类,这是一个强大的概念,可以轻松地在正确的位置添加大量function,而不必混淆所有需要应对的细节。
我现在去剃刀。
视图引擎是什么负责渲染您的视图,并将您的代码转换成光荣的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> }
视图引擎是MVC用来从控制器查找和呈现视图的内容。 如果你对默认路由感到满意,你可能不需要改变任何东西,但是可以说你想让你的共享文件通常位于root / views / shared,而不是位于root / common中,那么你将会使用一个自定义的viewengine需要创build能够做到这一点。
在这里你可以看到如何build立一个viewengine:
http://coderjournal.com/2009/05/creating-your-first-mvc-viewengine/
视图引擎也负责渲染视图,但是因为你只是在学习MVC,你可能不需要改变渲染function
在MVC中,View引擎是在你的View和浏览器之间工作的,通过编译你的View中的代码来为你的浏览器提供有效的HTML输出。 有许多可用的视图引擎,其中一些是:
-
ASPX
-
剃刀
-
火花
-
NHaml
-
NDJango
-
Hasic
-
抄网
-
贝尔维尤
-
夏普瓷砖
-
string模板
-
永拍
-
SharpDOM
目前大多数开发人员更喜欢使用Razor视图引擎,因为它提供了非常方便的编程方式。 所有这些视图引擎可能不支持ASP.NET MVC。
欲了解更多详情,你可以访问这篇文章 。
视图引擎在应用程序内工作,将HTML页面呈现给浏览器或用户。 它可以包含HTML标签,服务器控件和一些编程语言。
Razor是MVC4框架的首选视图引擎。
在ASP.Net MVC中,View引擎是一个在你的视图和浏览器之间工作的视图引擎,通过考虑你的视图提供的输出,为你的浏览器提供有效的HTML输出。视图引擎有很多种。
1)ASPX
2)剃刀
3)火花
4)NHaml
5)NDJango
6)Hasic
7)抄网
视图引擎能够将HTML从视图呈现给浏览器。
ASP.NET MVC支持很多视图引擎,但使用最广泛的视图引擎
- Web窗体/ ASPX视图引擎。
- 剃刀视图引擎。
Web表单视图引擎/ ASPX视图引擎:
- Web窗体视图引擎/ ASPX视图引擎是Asp.net MVC项目的默认视图引擎。 它可以从MVC 1.0中获得
- Web表单引擎的名称空间是Web.Mvc.WebFormViewEngine
- 此查看引擎的文件扩展名与Web Form类似:
.aspx,就像Web Form页面一样。 .ascx,用于部分视图和编辑器模板,就像用户控件。 .master,对于布局和母版页,就像Web窗体中的母版页一样。
- 不支持TDD(testing驱动开发)。
- Web表单引擎不会阻止XSS攻击,意味着在呈现页面时会触发保存在数据库中的任何脚本
- 语法:<%:Html.ActionLink(“Home”,“Index”)%>
Razor查看引擎:
- Razor View Engine是一个先进的视图引擎,可用于MVC 3.0及更高版本
- ASPX视图的命名空间Engine是Web.Razor。
- 此视图引擎的文件扩展名是.cshtml(Razor C#),用于视图,部分视图,编辑器模板和布局页面。 .vbhtml(Razor VB.NET),视图,部分视图,编辑器模板和布局页面。
- 支持TDD(testing驱动开发)。
- 与Web表单引擎相比,Razor Engine稍微慢一些。
- Razor引擎可以防止XSS攻击(跨站脚本攻击),它意味着它在呈现之前对脚本或html标记进行编码,例如<,>。
-
Razor语法比Web Form语法更易于理解和清理。 剃刀使用@符号使代码如下所示:
@ Html.ActionLink(“Home”,“Index”)
View Engine将视图呈现为浏览器的HTML表单。 如果我们在.Net框架中讨论一个MVC应用程序,它支持以下2个视图引擎:
1. Razor View Engine 2. Web Form / ASPX View Engine
差异: 1. Razor View Engine使用Layouts,但ASPX视图引擎使用Master页面。
2. Razor视图引擎使用部分页面,但ASPX视图引擎使用Web用户控制。
3. Razor视图引擎不是一种语言,它是标记语法。
4. @符号用于Razor引擎来编写代码。 @ Html.ActionLink(“Login”,“LoginView”)'<%:'分隔符用作起始点,'%>'用作结束点。 您可以在ASPX引擎中编写它们之间的代码。
5. Razor视图引擎具有.cshtml(使用C#)和.vbhtml(使用VB)扩展视图,布局和部分视图。 ASPX视图引擎有一个类似的扩展,就像一个简单的Web应用程序,如.aspx的视图,UserControl的.acsx和Master Pages的.master。