写点什么

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:398765
用户头像

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

关注

评论

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

【HarmonyOS 5】应用更新功能详解

深海的鲸同学 luvi

AppGallery Connect HarmonyOS SDK应用服务 应用更新

qData开源数据中台性能问题说明与优化建议

千桐科技

数据中台 数据治理 数据开发 大数据平台 数据集成

大数据-18 Flume HelloWorld 实现Source Channel Sink 控制台流式收集

武子康

Apache 大数据 hadoop flume

苹果电脑steam游戏打不开怎么办?Mac版的steam连接报错的原因及解决方案

阿拉灯神丁

steam CrossOver Mac下载 如何在Mac上运行win游戏 雷神加速器

Nexpose 8.11.0 for Linux & Windows - 漏洞扫描

sysin

智慧园区管理系统(源码+文档+讲解+演示)

深圳亥时科技

成功案例丨汽车塑料尾门模态分析优化及对标

Altair RapidMiner

仿真 CAE hyperworks OptiStruct 结构优化

从新一代昇腾AI云服务,俯瞰AI算力的云上变局

脑极体

AI

订餐数字化中枢

微擎应用市场

程序员秋招Java开发工作太难找了!根本没岗位!普通程序员如何破局?

程序员高级码农

程序员‘ Java 面试题

基于YOLOv8的疲劳状态识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!

申公豹

yolov8

GitHub MCP Server - 无缝集成GitHub API的自动化工具

qife122

Go GitHub 自动化

黑龙江腾讯云:科技赋能新未来

等保测评

怎么做黑龙江等保,做黑龙江等保有哪些流程?

等保测评

哈尔滨三级等保有什么作用?

等保测评

大数据-19 Flume Agent采集数据至HDFS集群 监听Hive日志 操作记录写入

武子康

大数据 hadoop hdfs hive flume

告别盲测时代,用 Playwright 全链路追踪,一键锁定问题!

测试人

软件测试

域名和空间的关系和区别

国科云

鸿蒙系统级AI能力全面赋能,华为阅读为生态伙伴和开发者带来效率提升

最新动态

支付宝携手HarmonyOS SDK实况窗,开启便捷停车生活

HarmonyOS SDK

harmoyos

大模型推理显存和计算量估计方法

AI布道Mr.Jin

Windows 7 10 11 2008R2 2016 2019 2022 2025 (updated Jun 2025) 2025 年 6 月更新

sysin

windows

全场景车辆服务数字化平台

微擎应用市场

最新资讯 | 矩阵起源产品VP邓楠亮相中国行业互联网大会 揭秘AI原生数据工程新范式

MatrixOrigin

华为发布伙伴SDK优选库,并推动SDK安全隐私新标准制定

HarmonyOS SDK

harmoyos

普通人用AI切水果视频8天涨粉17万,这个赚钱机会你还不知道?

田威AI

创业 赚钱 AI 图像生成 +AI

十余家头部伙伴经验分享,HarmonyOS SDK为鸿蒙应用体验创新注入源动力

HarmonyOS SDK

harmoyos

鸿蒙 Column 组件指南:垂直布局核心技术与场景化实践

谢道韫

字节的prompt优化平台限时免费开放

大林

AI 提示词

36小时代码交锋!HarmonyOS极客马拉松2025圆满收官

最新动态

Postgresql中的检索:中文分词及语义检索

程序员架构进阶

postgresql 检索 6月日更 6 月 优质更文活动 RAG应用

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