回答
视图引擎负责从创建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引擎中有一些非常漂亮的扩展点。例如,您可以提供一个自定义视图基类,这是一个强大的概念,可以轻松地在正确的位置添加大量功能,而无需混淆您必须处理的所有细节。
我现在会去剃刀。
视图引擎是MVC用来从控制器查找和呈现视图的视图引擎。如果你对默认路由感到满意,你可能不需要改变任何东西,但可以说你想让你的共享文件通常位于root/views/shared中,而不是位于root/common中,那么定制的viewengine就是你会需要创建才能做到这一点。
在这里,您可以看到如何构建一个视图引擎:
http://coderjournal.com/2009/05/creating-your-first-mvc-viewengine/
视图引擎还负责渲染视图,但因为你刚开始学习MVC,你可能不会需要改变渲染功能只是
视图引擎是什么负责渲染您的视图,并将您的代码转换为光荣的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中,视图引擎,你的浏览器和浏览器之间的工作方式是编译你查看里面的代码,以提供有效的HTML输出到浏览器中的一个。有许多可用的视图引擎,其中一些是以下几点:
ASPX
剃刀
星火
NHaml
NDJango
Hasic
抄网
贝尔维尤
夏普瓷砖
字符串模板
永击败
SharpDOM
目前大多数开发人员喜欢使用Razor视图引擎,因为它提供的编程非常方便的方式。所有这些视图引擎可能不支持ASP.NET MVC。
欲了解更多详情,您可以访问this article。
视图引擎适用于渲染HTML网页浏览器或给用户的应用程序中。它可以包含HTML标签,服务器控件和一些编程语言。
Razor是MVC4框架的首选视图引擎。
在ASP.Net MVC中,视图引擎,你的观点和浏览器之间的工作原理是通过考虑您的view.There提供输出,以提供有效的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窗体为:
的.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(“家”,“指数”)
视图引擎呈现视图到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。
到目前为止,每个响应有关ASP.NET。如果你正在寻找的NodeJS,视图引擎,然后下面的一些是选项:
Jade (Pug)
express-handlebars
ejs
React
还有,我发现在https://github.com/expressjs/express/wiki#template-engines但上面的人似乎是我听到有关的那些他们的整个列表最。
- 1. Expression.Bind() - 它实际上做了什么?
- 2. DBSlayer - 它实际上做了什么?
- 3. go-pear.php有什么用?它实际上做了什么?
- 4. Symfony缓存是什么:clear实际上做了什么?
- 5. `python setup.py check`实际上做了什么?
- 6. numpy.cov实际上做了什么
- 7. IMetadataExchange端点实际上做了什么?
- 8. BlockingCollection.Dispose实际上做了什么?
- 9. pdb文件实际上做了什么?
- 10. #include实际上做了什么?
- 11. LD_INCLUDE_PATH实际上做了什么吗?
- 12. TortoiseSVN清理实际上做了什么?
- 13. ld -m --verbose实际上做了什么?
- 14. CascadeType.REFRESH实际上做了什么?
- 15. Android SQLite - SQLiteDatabase.replace()实际上做了什么?
- 16. android:stretchMode实际上做了什么?
- 17. Int [] Reverse - 这实际上做了什么?
- 18. std :: ofstream :: close()实际上做了什么?
- 19. regsvr32 filename.ax实际上做了什么?
- 20. startAccessingSecurityScopedResource()实际上做了什么?
- 21. EntityManger.gettransaction.rollback方法实际上做了什么?
- 22. NSLog实际上做了什么?
- 23. rake db:test:prepare实际上做了什么?
- 24. terraform刷新实际上做了什么?
- 25. mysql_real_escape_string()实际上做了什么?
- 26. XCode'Clean'实际上做了什么?
- 27. e.preventDefault()方法实际上做了什么?
- 28. OpenGL - glDeleteTextures实际上做了什么?
- 29. -arrayWithArray实际上做了什么?
- 30. session_register_shutdown实际上做了什么?
你能告诉我(给我一个链接)我如何呈现ViewEngines离线? – gillyb
@gillyb:你最好的选择是http://razorengine.codeplex.com/,它可以在ASP环境之外呈现Razor视图。 – mnemosyn