ASP.NET MVC Razor视图引擎

Nic*_*ray 41 asp.net-mvc viewengine razor

阅读Scott Guthrie的博客文章,了解ASP.NET MVC 的新Razor视图引擎,并阅读这个问题,比较可用的视图引擎.

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

Dar*_*rov 23

单元可测试:新的视图引擎实现将支持单元测试视图的功能(无需控制器或Web服务器,并且可以托管在任何单元测试项目中 - 无需特殊的应用程序域).

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


que*_*en3 22

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

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

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

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


Qua*_*ngo 15

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

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

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

  3. IntelliSenseTerse语法很不错,但不是最重要的部分.