我注意到 Scott Guthrie 在他的博客上开始将 mention Razor 改为 fair bit,但我不确定它是否适合我的风格。
诚然,对于已经习惯了“标准”类型的 ASP.Net 标记(内容占位符和内联代码)的人来说,这是一种相当陌生的风格,但感觉就像有很多额外的页面需要管理,而对我来说标记不太清楚。
其他人对此有何感受?您认为在搭建新的 MVC 页面时应该认真考虑它,还是只是试图解决一个不存在的问题?
最佳答案
[免责声明:我是 MVC 和 Razor 的 Microsoft 开发人员之一,所以我可能有点偏见:)]
我们将 Razor 设计为一种简洁的模板语言,只使用最少的必要控制字符。我想说的是,与使用“传统”WebForms 语法的相同代码相比,您的大部分 View 可以用更少的字符来表达。
例如以下 ASPX 语法中的代码片段:
<% if(someCondition) { %>
<ol>
<% foreach(var item in Model) { %>
<li><%: item.ToString() %></li>
<% } %>
</ol>
<% } %>
可以用Razor表示如下:
@if(someCondition) {
<ol>
@foreach(var item in Model) {
<li>@item.ToString()</li>
}
</ol>
}
虽然 ASPX 版本有 21 个转换字符(
<%
和 %>
),但 Razor 版本只有三个( @
)我想说 Razor 的优点如下:
与页面相关的概念也很容易从您在 ASPX 中拥有的内容映射出来
@functions { ... }
块而不是 <script runat="server"> ... </script>
此外,Razor 有许多有用的概念,我认为它们比 ASPX 中可用的概念要好:
@helper
函数用于真正轻松创建发出标记的函数 @model
关键字,用于指定 View 的模型类型,而无需编写具有完整类名 <%@ Page ...
指令我想我们已经解决了一个真正的问题,即让您更轻松地编写简洁且符合标准的 View ,同时为您提供重构公共(public)代码的方法。
当然,并不是每个人都喜欢这种语法,这也是我们完全支持 ASPX View 引擎的原因。此外,您还可以查看 Spark 和 NHaml,这是两个享有重要社区关注度的 3rd 方 View 引擎。以下博客文章对不同产品进行了很好的比较:http://blogs.msdn.com/b/coding4fun/archive/2010/10/04/10070953.aspx
关于asp.net-mvc - Razor 语法是否在 UI 标记中提供了引人注目的优势?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4019740/