ASP.NET MVC Razor视图引擎

时间:2010-07-04 13:15:48

标签: asp.net-mvc razor viewengine

阅读Scott Guthrie关于ASP.NET MVC的新Razor视图引擎的博客文章,并阅读此question比较可用的视图引擎。

Razor似乎解决了默认视图引擎的大多数问题。作为开发人员,哪些功能差异会使其成为一个引人注目的选择?缺少哪些功能会阻止您使用它?

6 个答案:

答案 0 :(得分:23)

  

单元可测试:新视图引擎   实施将支持   单元测试视图的能力(没有   需要控制器或网络服务器,   并且可以在任何单元测试中托管   项目 - 没有特殊的应用程序域   必需的)。

最后!!!无法相信微软花了将近8年的时间才最终推出支持此功能的视图引擎。

答案 1 :(得分:22)

除标记语言外,还有更多内容可供查看引擎。很少有我想念的Spark功能:

  • 使用相同的标记语言编写html扩展,而不是C#(宏) - 我看到Razor也支持这个,我希望它支持方法/参数覆盖;
  • 自定义标签(写_Tag.spark使用< Tag />);
  • 自动生成的变量,如varIsFirst,varIndex等;
  • 特殊表达形式(?{}用于条件属性,$!{}用于跳过错误等;)
  • 良好的主/部分布局支持,包括在部分中指定标记部分应该只在主数据中呈现一次的能力(例如脚本包含);
  • 您仍然可以使用WebForms标记 - 非常适合兼容性和增量升级;
  • 支持在彼此内部使用“”和“引号”(非常有用)。

我喜欢Spark语法for loops / ifs more - 混合HTML<>和C#{}括号看起来不太好 - 但这纯粹是个人意见。

Razor也有非常有前途的功能,例如内联模板。鉴于Spark创建者是由微软聘用的,我认为Razor有一个很好的写作,非常有用,并且支持良好的视图引擎。当然,我不会用Razor重写我的数百个Spark视图(尽管我用Spark重写了几十个我的WebForms视图)。但我肯定会认真看待Razor - 我只是从你的问题中找到了这个,谢谢 - 我现在看到的看起来很有希望。当然,它不与WebForms竞争(任何视图引擎都优于WebForms),但如果你还没有投入太多的另一个视图引擎,它看起来是新的ASP.NET MVC项目的一个很好的选择。

答案 2 :(得分:15)

对我来说有三个令人信服的理由:

  1. 编译 - 可以将Razor视图编译为DLL。最后,我们在.NET Web项目中获得了适当的可重用性。我可以拥有一个知道如何显示自己的业务对象,而不会将该代码作为web项目某些部分中的.ascx文件浮动。

  2. 可测试性 - 因为它被编译成一个类,我可以编写一个单元测试并在其上抛出模拟的对象实例,看看HTML是否正确。

  3. 智能感知 Terse语法很不错,但不是最重要的部分。

答案 3 :(得分:4)

显然我还没有在实践中对它进行评估,但它比ASPX引擎更为简洁,这是诱导转换的最引人注目的特性。我只希望它也能更好地自动格式化。事实上,它将通过智能感知支持并与MVC一起提供,这使其成为启动新项目的自然选择。在我进行切换之前,我将在一个小项目上给它一个公平的镜头。只是阅读文章,我没有看到任何我无法用它做的事情,我现在正在使用ASPX引擎。

更新:我一直在使用Razor超过一年,并且永远不会回到ASPX引擎。语法看起来非常自然和富有表现力。

答案 4 :(得分:0)

除了更清晰的外观,布局部分的灵活性看起来非常好,声明式HTML帮助程序看起来非常有用。到目前为止,没有看到使用它的任何缺点,但当然必须在实践中尝试。

答案 5 :(得分:0)

Razor使用Brackets,即foreach个东西。 Spark在这里使用XML标签。

因此,Spark完全支持每个XML处理器解析和分析视图文件。

Mabye这不是一件大事,但表现出一致性和可扩展性。