76

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

只是想听听人们对此的看法。

4

4 回答 4

45

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

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

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

于 2010-08-06T12:56:33.537 回答
45

前微软开发者的意见

我在 MSDN 网站的核心团队工作。现在,我和我的编程团队一起将 c# razor 用于电子商务网站,我们重点关注带有后端 c# razor 页面和 LINQ-Entity 内存数据库的 jQuery 前端,因此即使在带有查询的嵌套 for 循环中,页面的响应时间也只有 1-2 毫秒并且没有页面缓存。我们不使用 MVC,只是简单的 ASP.NET,剃须刀页面被映射到 IIS 7 的 URL 重写模块,根本没有 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 和表单索引自动保存和命名空间,所以你不必考虑它。

于 2011-02-26T08:31:51.753 回答
7
  1. 一切都是默认编码的!!!这是相当巨大的。

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

  3. 您可以制作一个很好的部分。

于 2010-12-15T17:37:51.483 回答
3

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

声明式 HTML 助手看起来也很酷,因为在 C# 代码中编写 HTML 助手让我想起了 ASP.NET 中的自定义控件。我认为他们从部分内容中获取了一个页面,但使用了内联代码。

所以相对于 asp.net 视图引擎有一些明确的好处。

与 spark 之类的视图引擎相比:

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

您可以完全按照声明性帮助程序的方式编写局部代码,只需将变量传递给局部变量,您就会拥有相同的东西。这已经存在很长一段时间了。

于 2010-08-06T18:47:19.953 回答