我注意到斯科特·格思里已经开始提剃须刀一个公平位在他的博客,但我只是不那么肯定,这是一个很适合我的风格。
对于那些习惯于使用“标准”类型的ASP.Net标记(内容占位符和内联代码)的人来说,这是一种相当陌生的样式,但是感觉就像要管理很多额外的页面,而对我来说却不太清晰。
其他人对此有何感想?您是否认为应该在构架新的MVC页面时认真考虑某些问题,还是只是试图解决不存在的问题?
Answers:
[免责声明:我是MVC和Razor上的Microsoft开发人员之一,所以我可能会有点偏见:)]
我们将Razor设计为一种简洁的模板语言,仅使用最少数量的控制字符。我想说,使用“传统” WebForms语法,与相同代码相比,可以用更少的字符表示视图的大部分内容。
例如,以下使用ASPX语法的代码段:
<% if(someCondition) { %>
<ol>
<% foreach(var item in Model) { %>
<li><%: item.ToString() %></li>
<% } %>
</ol>
<% } %>
可以用剃刀表示如下:
@if(someCondition) {
<ol>
@foreach(var item in Model) {
<li>@item.ToString()</li>
}
</ol>
}
ASPX版本具有21个过渡字符(<%
和%>
),而Razor版本只有3个(@
)
我会说剃刀的优点如下:
与页面相关的概念也可以轻松地从ASPX中映射
@functions { ... }
块而不是 <script runat="server"> ... </script>
此外,Razor具有许多有用的概念,我认为它们比ASPX中提供的概念要好:
@helper
真正轻松创建发出标记的函数的函数@model
用于指定视图的模型类型的关键字,而不必编写<%@ Page ...
具有完整类名的指令我想我们已经解决了一个真正的问题,那就是允许您更轻松地编写简洁且符合标准的视图,同时为您提供重构通用代码的方法。
当然,并不是每个人都喜欢语法,这就是为什么我们也完全支持ASPX视图引擎。此外,您还可以查看Spark和NHaml,这是两个受到社区广泛关注的第三方视图引擎。以下博客文章对不同产品进行了很好的比较:http : //blogs.msdn.com/b/coding4fun/archive/2010/10/04/10070953.aspx
<a href="mailto:john@aol.com">
?
@@