【发布时间】:2011-07-04 09:49:35
【问题描述】:
您好,我刚刚下载了 MVC 3,发现了一个名为“RAZOR”的新视图引擎。它有什么用处?
它有什么好处?
与 ASPX 页面有何不同?
应该在哪里使用 RAZOR 视图引擎?
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-3 razor
您好,我刚刚下载了 MVC 3,发现了一个名为“RAZOR”的新视图引擎。它有什么用处?
它有什么好处?
与 ASPX 页面有何不同?
应该在哪里使用 RAZOR 视图引擎?
【问题讨论】:
标签: asp.net asp.net-mvc asp.net-mvc-3 razor
Scott Gu 在他的 Razor introductory blog post 中回答了你的大部分问题:
我们使用的新视图引擎选项 工作围绕 HTML 进行了优化 使用以代码为中心的生成 模板方法
...
紧凑、富有表现力和流畅:Razor 将 所需的字符和击键 一个文件,并启用快速、流畅的 编码工作流程。不像大多数模板 语法,你不需要打断 您的编码要明确表示 HTML 中的服务器块。这 解析器足够聪明,可以推断出这一点 从你的代码。这使得一个真正 紧凑而富有表现力的语法是 干净、快速、有趣的打字。
简单易学:Razor 简单易学,让您快速掌握 用最少的概念来生产。 您使用所有现有的语言和 HTML 技巧。
不是一种新语言:我们有意识地选择不创造一种新的语言 使用 Razor 的命令式语言。 相反,我们希望使开发人员能够 使用他们现有的 C#/VB(或其他) 使用 Razor 的语言技能,以及 提供模板标记语法 实现了一个很棒的 HTML 结构 使用您选择的语言进行工作流程。
适用于任何文本编辑器:Razor 不需要特定工具 并使您能够在 任何普通的旧文本编辑器(记事本 效果很好)。
具有出色的智能感知:虽然 Razor 被设计为不需要 特定的工具或代码编辑器,它 将有很棒的语句完成 Visual Studio 中的支持。我们会 更新 Visual Studio 2010 和 Visual Web Developer 2010 拥有完整的编辑器 智能感知。
- 可单元测试:新的视图引擎实现将支持对视图进行单元测试(无需控制器或 网络服务器,可以托管在任何单元测试项目中——没有特别的 需要应用程序域)。
【讨论】:
MVC 中 Razor 视图引擎和 ASPX 视图引擎的区别
http://royalarun.blogspot.in/2013/12/difference-between-razor-view-engine.html
ASPX 视图引擎是从一开始就包含在 Asp.net MVC 中的 Asp.net MVC 的默认视图引擎。
Razor Engine 是随 MVC3 引入的高级视图引擎。这不是一种新语言,而是一种新的标记语法。
ASPX 视图引擎不支持 TDD(测试驱动开发)
Razor 引擎支持 TDD(测试驱动开发)
Visual Studio 中的 ASPX 视图引擎支持设计模式意味着您无需运行应用程序即可查看页面外观。
Razor 引擎不支持 Visual Studio 中的设计模式,这意味着您看不到设计页面的外观。
ASPX 视图引擎比 Razor 引擎快。
与 Webform 引擎相比,Razor 引擎有点慢。
语法 Webform 使用 例如
< %: Html.ActionLink("SignUp", "SignUp") % >
Razor 使用@符号 例如
@Html.ActionLink("SignUp", "SignUp")
ASPX 视图引擎不阻止 XSS 攻击,这意味着在呈现页面时将触发保存在数据库中的任何脚本。
Razor 引擎防止 XSS 攻击(Cross-Site Scripting Attacks)意味着它在渲染到视图之前对脚本或 html 标签(如 )进行编码。
【讨论】:
虽然语法有点过时:ScottGu explains most of it.
可以在Haacked blog 上找到快速语法参考。
【讨论】: