Razor / CSHTML-我们拥有什么好处?[关闭]


75

任何人都在使用新的CSHTML页面功能,并且发现他们比现有的ASP.NET MVC默认视图引擎或Web表单更喜欢这种新的视图引擎语法,如果是,为什么?与HTML相比,CSHTML会给您带来什么优势,反之亦然?

只是好奇地听到人们对此的看法。


1
我认为可以对这个问题给出客观的答案,将其命名为实际的(客观的)或感知的(主观的)利益,但是您应该重新表述一下问题以获得这些利益。按照目前的形式,它过于主观和争论。
dtb

2
我略微更新了问题。但是我不得不说,我正在寻找赞成与反对,并且我会尽一切可能得到的回应,因为我正在寻找一个总体水平,但也希望了解技术细节,所以我不会看不到我说的方式有问题...
Brian Mains'8

1
是否有一些针对前端开发人员使用Razor的备忘单/指南?我目前正在研究Razor项目,并使用Foundation对该应用程序进行外观设计,并且我想了解有关Razor的更多信息,可能会对我有所帮助。
Giacomo Paita '17

Answers:


45

好处之一是Razor视图可以在单元测试中呈现,而以前的ASP.Net呈现器很难做到这一点。

ScottGu的公告中,这被列为设计目标之一:

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


添加了支持证据的链接:)我自己还没有使用过Razor,所以我现在没有要共享的代码。给它几个月的时间,也许我将有时间玩Beta!
西蒙·斯蒂尔

2
我们还没有推出任何指导测试剃刀意见,但我在博客托管剃刀发动机外部ASP.Net的:blog.andrewnurse.net/2010/07/22/...
安德鲁·斯坦顿,护士

5
您绝对应该看一下CodePlex上托管的出色的Razor模板引擎:razorengine.codeplex.com
Marius Schulz,2010年

哇,我从来没有新的剃刀视图可以测试。我认为测试控制器的输出(例如,传递正确/有效的模型)就足够了。除此之外,其他任何东西都在测试HTML输出-似乎有点愚蠢。
RPM1984 '12

1
这个答案(以及其他答案)仍然是最新的吗?我想知道,有了所有新功能和新东西,使用cshtml仍然有任何好处吗?
2013年

44

前Microsoft开发人员的意见

我曾在MSDN网站的核心团队工作。现在,我与我的编程团队一起将c#razor用于电子商务网站,我们将重点放在带有后端c#razor页面和LINQ-Entity内存数据库的jQuery前端上,因此即使在嵌套查询循环时,这些页面的响应时间也为1-2毫秒并且没有页面缓存。我们不使用MVC,只是使用带有IIS 7的URL重写模块映射的剃须刀页面的普通ASP.NET,根本不使用ASPX页面或ViewState或服务器端事件编程。它没有MVC为挑战的正则表达式放入代码结构中的多余(不必要的)层。少即是多。这一切都是苗条和卑鄙的,但是我为MVC的可测试性提供了支持,仅此而已。

剃刀页面没有ASPX页面那样的事件生命周期。它只是呈现为一个请求的页面。C#是一种很棒的语言,Razor很好地摆脱了困境,让它能够完成自己的工作。使用泛型和linq进行匿名键入使c#和razor页面的生活变得如此轻松。使用Razor页面将帮助您更轻松地思考和编写代码。

Razor和MVC的缺点之一是没有类似于ViewState的持久性。我需要为此实现一个解决方案,所以最终我在这里为此编写了一个jQuery插件-> http://www.jasonsebring.com/dumbFormState ,这是HTML 5离线存储支持的表单状态插件,在所有主要版本中均有效浏览器。它目前仅用于表单状态,但是您可以非常简单地使用window.sessionStorage或window.localStorage在回发甚至页面请求之间存储任何状态,我只是想让它根据URL和表单索引对其进行自动保存和命名空间,所以您不必考虑。


1
最令人印象深刻的性能数据-我不喜欢ASP.NET尝试进行VB6之类的Web编程。使可测试性成为bit子。因此,我也喜欢MVC。您是否有一个示例可以分享您所使用的体系结构。
mozillanerd 2011年

对于“ mozillanerd”,就体系结构而言,如果您想测试一下我描述的内容,请使用诸如var myobj = new {/ *放置类似于json * /的数据结构之类的新数据,从字面上做一个匿名的c#对象缓存在内存中,并查看LINQ对它有多快。想象这是产品目录,然后尝试使用LINQ。它的速度极快,但在正确的缩放比例方面最好放在一个盒子上,除非您进行了天蓝色的缓存并且正在天蓝色的Windows上运行它。
詹森·塞布林

7
  1. 一切都是默认编码的!!!这是巨大的。

  2. 可以编译声明性帮助程序,因此您无需执行任何特殊操作即可共享它们。我认为它们将在某种程度上取代.ascx控件。您必须跳过一些箍才能在另一个项目中使用.ascx控件。

  3. 您可以将所需的部分设为好。


3

最大的好处就是代码更加简洁。VS编辑器还将具有其他某些视图引擎所不具备的IntelliSense支持。

声明性HTML帮助器看起来也很酷,因为在C#代码中使用HTML帮助器使我想起了ASP.NET中的自定义控件。我认为他们使用了内联代码从局部页面中获取了页面。

因此,相对于asp.net视图引擎有一些明显的好处。

与之相对的是像spark这样的视图引擎:

Spark仍然更加简洁,您可以将if和loops保留在html标签本身中。标记对我来说仍然更自然。

您可以精确地编写partials的代码,就像编写声明性助手一样,只需将变量传递给partials,就可以了。这已经有一段时间了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.