我开始学习ASP.NET MVC3。
因此,在阅读在线和书籍教程时,我经常遇到这个术语“view engine”。我不知道它是什么。
它实际上做了什么?
为什么这对我来说很重要?
答案 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输出。有许多可用的视图引擎,其中一些是:
ASPX
剃刀
火花
NHaml
NDJango
Hasic
抄网
贝尔维尤
Sharp Tiles
字符串模板
Wing Beats
SharpDOM
目前大多数开发人员更喜欢使用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)
视图引擎可以将视图中的HTML呈现给浏览器。
ASP.NET MVC支持许多视图引擎,但使用最广泛的视图引擎是
Web表单视图引擎/ ASPX视图引擎:
.aspx,对于像Web窗体页面一样的视图。 .ascx,部分视图&amp;编辑模板就像用户控件一样。 .master,用于布局和母版页,就像Web窗体中的母版页一样。
Razor View Engine:
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是它的延伸。
Razor我们使用@。 可以在HTML和代码之间切换。 Razor查看扩展名.CSHTML和.VBHTML