AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

ASP.NET MVC 的四种视图引擎

  • 2010-07-14
  • 本文字数:1075 字

    阅读完需:约 4 分钟

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

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

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

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

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

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

因为 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

2010-07-14 19:398662
用户头像

发布了 76 篇内容, 共 26.9 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

几行代码配置高频按钮,保障用户体验一致

HarmonyOS SDK

harmoyos

当数字孪生遇见碳中和:西门子 Xcelerator给企业转型带来“新武器”

科技热闻

【华为云MySQL技术专栏】Binlog压缩:节省存储,优化网络,提升性能

华为云开发者联盟

华为云 #Mysql

无缝适配!天翼云助力用户一键体验Qwen3

科技热闻

CrossOver 25.0.1 for macOS & Linux - 领先的 Wine 解决方案

sysin

crossover

得物可观测平台架构升级:基于GreptimeDB的全新监控体系实践

得物技术

可观测性 存算分离 流式计算 GreptimeDB

检测IP质量时除了纯净度,还需要注意这些问题!

kookeey代理严选

代理IP 测试环境 住宅ip 独享代理

Databend 产品月报(2025年4月)

Databend

Java中的多态与继承

码语者

Java

原生 APP 开发的测试

北京木奇移动技术有限公司

软件外包公司 APP外包公司 APP开发公司

大数据从业者必知必会的Hive SQL调优技巧

京东科技开发者

Microsoft System Center 2025 version 2503 Multilanguage - Windows 服务器管理软件

sysin

Windows Server

Nipper 3.7.0 Windows x64 - 网络设备漏洞评估

sysin

Nipper

CrossOver25中文破解版下载安装教程,CrossOver 软件激活码分享,CrossOver 25 for Mac如何永久免费使用

阿拉灯神丁

激活码生成器 Mac软件 CrossOver Mac下载 crossover mac 破解版 苹果电脑必备软件

Bolt.diy 评测方案:从部署到创意实践的全方位探索

穿过生命散发芬芳

DeepSeek Bolt.diy

Microsoft System Center 2022 version 2503 Multilanguage - Windows 服务器管理软件

sysin

Windows Server

金仓数据库 KingbaseES 的 rm-protect 机制:守护数据安全的可靠防线

金仓技术

KingBase 金仓数据库

原生 APP 开发的方法

北京木奇移动技术有限公司

软件外包公司 APP外包公司 APP开发公司

NotebookLM 音频概览支持中文;扎克伯格 LlamaCon 发言:语音当下被低估了,未来语音交互将占据更大比重丨日报

声网

五一劳动节|致敬平凡而伟大的劳动者

中烟创新

不同规模的企业组网方案选择指南:从初创到集团

Ogcloud

组网 组网网络 企业组网 办公网络

JEB Pro v5.28 (macOS, Linux, Windows) - 逆向工程平台

sysin

JEB

百度智能云千帆正式上线Qwen3系列模型

科技热闻

原生APP开发的优点

北京木奇移动技术有限公司

APP开发 软件外包公司 APP外包公司

AI 时代程序员生存指南:掌握工具者掌控职场主动权

飞算JavaAI开发助手

java浅拷贝BeanUtils.copyProperties引发的RPC异常

京东科技开发者

AI 智能体开发框架的特点

北京木奇移动技术有限公司

AI大模型 AI智能体 软件外包公司

Splunk Enterprise 9.4.2 发布 - 机器数据管理和分析

sysin

Splunk Enterprise

账户锁定解决方案

运维有小邓

AD域管理 账户锁定

iVX 开源:解码软件生态进化新密码

代码制造者

开源 redis图形化界面

2025最新TikTok运营IP配置指南

Ogcloud

云手机 tiktok运营 海外IP 原生IP 本地IP

ASP.NET MVC的四种视图引擎_.NET_Jonathan Allen_InfoQ精选文章