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

Naw*_*waz 47 c# asp.net asp.net-mvc viewengine

我开始学习ASP.NET MVC3.

因此,在阅读在线和书籍教程时,我经常遇到这个术语"视图引擎".我不知道它是什么.

它实际上做了什么?

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

mne*_*syn 52

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

例如,ASP.NET自带了自己的视图引擎.这是一个地方的意见有许多像标签<% %><%: %>.它使用.aspx文件扩展名.

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

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

在SO上有一个很好的asp.net视图引擎比较.

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

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

我现在要去剃刀.


And*_*son 8

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

基本上你需要关注两个:ASPX和Razor.在我看来,Razor更加时尚和易于使用,仅以MVC3支持为代价.

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

<% foreach(var item in Model) { %>
    <tr>
        <td><%: item.Name %></td>
    </tr>
<% } %>
Run Code Online (Sandbox Code Playgroud)

而Razor等价物将如下所示:

@foreach(var item in Model) {
    <tr>
        <td>@item.Name</td>
    </tr>
}
Run Code Online (Sandbox Code Playgroud)


Dar*_*ryl 5

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

  1. ASPX

  2. 剃刀

  3. 火花

  4. NH哈姆尔

  5. ND詹戈

  6. 哈西克

  7. 抄网

  8. 贝尔维尤

  9. 锋利的瓷砖

  10. 字符串模板

  11. 翅膀节拍

  12. 夏普DOM

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

欲了解更多详情,您可以访问这篇文章