继上周介绍了Razor之后,ASP.NET MVC 现在已有四种主要的视图引擎。其他三种引擎是Spark、NHaml和传统的ASPX文件模板。本文将大致介绍这四种引擎,并着重讨论新的Razor引 擎。

ASPX风格的视图引擎可以追溯到遥远的ASP。使 用<%= %>和<%: %>语法的占位符在这类风格中占据了统治地位。随着时间的推移,ASPC控件被加入进来,之后是母版页(Master Page),但这同时也带来 了昂贵的页面生命周期。

Spark,在Castle项目的MonoRail中也使用到,其采取了稍微不同的做法。它既支持占位符,也可以用特殊的属性和标签不受限制地把HTML和代码混合在一起。它或许有些繁琐,但却拥有完全兼容 XML的优势。

NHamlHaml标记语言的.NET实现。这种语言根本不使用XML式的语法。借助于一种速记语法,它免去了前一种风格(xml)中大量的语法噪音,比如结束标签等。

最新的视图引擎是微软的Razor。虽然所有的模板系统都具有一些共同特征,但 Razor却和我们前面讨论的三种视图引擎截然不同。不同于NHaml,Razor仍然使用XML标记;但又不同于Spark,Razor在使用XML代 码方面没有走得那么极端。它也不完全类似于ASPX,因为它把那些比较笨重的占位符替换成@符号接表达式或者普通的控制块。因为不需要特殊的结束标记,所 以Razor最终的代码很简练。

默认情况下,从@表达式生成的所有文本都是HTML编 码过的【译注:从而防止XSS攻击】。@块里面的文本可以包含多个“HTML内容块”。当识别出任意的XML标签,Razor就会切换回HTML模式,与传统ASP开发人员使用“%> html代码 <%=”的技巧非常相似。如果你实际不希望XML标签切换回HTML模式,你可以使用<text>作为一个占位符。

因为Razor使用了现有的VB或C#语法,微软预计它将很容易学习。任何文本编辑器都可以用来编辑Razor文件,而Visual Studio 2010也将更新加入对Razor文件智能提示的完整支持。

Razor的另一个重要特点是它与单元测试框架的兼容性。Razor模板不需要Controller或Web服务器作为宿主(host),所以用它写出来的视图应该是充分可测的。对于ASPX,虽然理论上一 切皆可测试,但实际上却是相当困难;而其他两个引擎在各自的网站上面甚至都没有真正提到可测试性。

四个视图引擎都支持母版页的概念,所以在这方面没有太 多可谈的内容。对于把视图预编译进assembly文件,ASPX只提供了部分支持,而Razor和Spark都是完整地支持。NHaml目前把这项还是 放在需求特性的列表上面。特别有趣的是,Razor和Spark预编译出的视图可以用在无宿主的场景下,比如邮件合并引擎。
查看英文原文Four View Engines for ASP.NET
MVC

asp.net mvc视图引擎的更多相关文章

  1. Asp.net MVC 视图引擎

    Asp.net MVC视图引擎有两种: 1.ASPX View Engine 这个做过WebForm的人都清楚 设计目标:一个用于呈现Web Form页面的输出的视图引擎. 2.Razor View ...

  2. (转)Asp.Net Mvc视图引擎Razor介绍

    Asp.Net Mvc视图引擎Razor介绍 1.Razor介绍 程序园原创,转载请注明:http://www.kwstu.com/ArticleView/dabaomvc_2014082408205 ...

  3. Asp.Net Mvc视图引擎Razor介绍

    1.Razor介绍 1)ASP.NET MVC3 带来了一种新的名为Razor 的视图引擎,提供了下列优点: Razor 的语法简单且清晰,只需要最小化的输入 Razor 容易学习,语法类似于 C#  ...

  4. ASP.NET MVC 视图(五)

    ASP.NET MVC 视图(五) 前言 上篇讲解了视图中的分段概念.和分部视图的使用,本篇将会对Razor的基础语法简洁的说明一下,前面的很多篇幅中都有涉及到视图的调用,其中用了很多视图辅助器,也就 ...

  5. ASP.NET MVC 视图(四)

    ASP.NET MVC 视图(四) 前言 上篇对于利用IoC框架对视图的实现进行依赖注入,最后还简单的介绍一下自定义的视图辅助器是怎么定义和使用的,对于Razor语法的细节和辅助器的使用下篇会说讲到, ...

  6. ASP.NET MVC 视图(三)

    ASP.NET MVC 视图(三) 前言 上篇对于Razor视图引擎和视图的类型做了大概的讲解,想必大家对视图的本身也有所了解,本篇将利用IoC框架对视图的实现进行依赖注入,在此过程过会让大家更了解的 ...

  7. ASP.NET MVC 视图(二)

    ASP.NET MVC 视图(二) 前言 上篇中对于视图引擎只是做了简单的演示,对于真正的理解视图引擎的工作过程可能还有点模糊,本篇将会对由MVC框架提供给我们的Razor视图引擎的整个执行过程做一个 ...

  8. ASP.NET MVC 视图(一)

    ASP.NET MVC 视图(一) 前言 从本篇开始就进入到了MVC中的视图部分,在前面的一些篇幅中或多或少的对视图和视图中的一些对象的运用进行了描述,不过毕竟不是视图篇幅说的不全面,本篇首先为大家讲 ...

  9. ASP.NET Razor 视图引擎编程参考

    ASP.NET Razor 视图引擎编程参考   转载请注明出处:http://surfsky.cnblogs.com Rasor 视图引擎    http://msdn.microsoft.com/ ...

随机推荐

  1. [ZOJ2341]Reactor Cooling解题报告|带上下界的网络流|无源汇的可行流

    Reactor Cooling The terrorist group leaded by a well known international terrorist Ben Bladen is bul ...

  2. Swift “ambiguous use of operator '>'”

    http://stackoverflow.com/questions/25458548/swift-ambiguous-use-of-operator 3down votefavorite   I h ...

  3. bayer转dng实现过程记录

    前言 项目中需要将imx185出来的raw数据转成dng格式,一开始认为很简单的事情,后面才发现还是挺复杂的!!!首先考虑的是不写任何代码,直接用adobe提供的转换工具来转,结果发现,不仅是adob ...

  4. 智联招聘的python岗位数据词云制作

    # 根据传入的背景图片路径和词频字典.字体文件,生成指定名称的词云图片 def generate_word_cloud(img_bg_path, top_words_with_freq, font_p ...

  5. 设计模式之笔记--简单工厂模式(Simple Factory)

    简单工厂模式(Simple Factory) 类图 描述 简单工厂: 一个抽象产品类,可以派生多个具体产品类: 一个具体工厂类: 工厂只能创建一个具体产品. 应用场景 汽车接口 public inte ...

  6. 【 Zabbix 】— Tomcat监控及故障重启服务

    一.监控tomcat原理 zabbix_server开启java poller,zabbix_java开启JavaGateway, 端口为:10052,tomcat JMX开启12345提供性能数据. ...

  7. rest-framework-@action()装饰器

    路由Routers 使用方法:   在urls.py中定义路由 from rest_framework.routers import DefaultRouter # 定义视图集的路由 router = ...

  8. [DB2]Linux下安装db2 v9.7

    https://www.cnblogs.com/cancer-sun/p/5168728.html

  9. Visual Studio Code更改语言

    参数地址:Visual Studio Code 设置Display Language介绍 在Visual Studio Code中使用快捷键Ctrl + Shift + P可以打开命令行 在local ...

  10. 前端通过form表单构造带参数url

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...