Razor / CSHTML - 我们拥有什么样的好处?

时间:2010-08-06 12:29:45

标签: c# asp.net-mvc razor

那里的任何人使用新的CSHTML页面功能,并发现他们更喜欢这种新的视图引擎语法而不是现有的ASP.NET MVC默认视图引擎或Web表单,如果是这样,为什么?那么CSHTML比MVC或Web表单更具优势,反之亦然?

只是好奇地听到人们接受它。

4 个答案:

答案 0 :(得分:44)

其中一个好处是Razor视图可以在单元测试中呈现,这是以前的ASP.Net渲染器不容易实现的。

ScottGu's announcement开始,这被列为设计目标之一:

  

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

答案 1 :(得分:44)

Ex Microsoft Developer's Opinion

我曾在MSDN网站的核心团队工作过。现在,我将c#razor用于我的编程团队的电子商务网站,我们将重点放在具有后端c#razor页面和LINQ-Entity内存数据库的jQuery前端上,因此即使在嵌套的for循环中,页面的响应时间也是1-2毫秒并且没有页面缓存。我们不使用MVC,只使用普通的ASP.NET,其中razor页面使用URL重写模块映射到IIS 7,没有ASPX页面或ViewState或服务器端事件编程。它没有额外的(不必要的)层MVC放在正则表达式挑战的代码结构中。对我们来说,少即是多。它非常精简和卑鄙,但我为MVC提供了可测试性的道具,但这就是全部。

Razor页面没有像ASPX页面那样的事件生命周期。它只是呈现为一个请求页面。 C#是一种非常棒的语言,Razor很好地完成了它的工作。使用泛型和linq的匿名输入使用c#和razor页面使生活变得如此简单。使用Razor页面可以帮助您更轻松地思考和编码。

Razor和MVC的一个缺点是没有类似ViewState的持久性。我需要为此实现一个解决方案,所以我最终为此编写了一个jQuery插件 - > http://www.jasonsebring.com/dumbFormState这是一个HTML 5离线存储支持的表单状态插件,现在可以在所有主流浏览器中使用。这仅仅是形式的国家,但目前可以使用window.sessionStorage或window.localStorage非常简单地存储任何类型的跨回传,甚至页面请求的状态,我只是懒得使它基于URL和形式的索引,以便自动保存和命名空间它你不必考虑它。

答案 2 :(得分:7)

  1. 默认编码所有内容!这非常巨大。

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

  3. 您可以制作一个不错的部分。

答案 3 :(得分:3)

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

声明式HTML帮助程序看起来也很酷,因为在C#代码中执行HTML帮助程序会让我想起ASP.NET中的自定义控件。我认为他们从partials中获取了一个页面,但使用了内联代码。

因此对asp.net视图引擎有一定的好处。

与像火花一样的视图引擎形成鲜明对比:

Spark更简洁,你可以将if和循环保存在html标签中。标记对我来说仍然感觉更自然。

你可以准确地编写部分代码来执行声明性帮助,你只需将变量传递给partial,你也可以使用相同的东西。这已经存在了很长一段时间。