什么,为什么或什么时候选择 cshtml 比 aspx 更好?

我想知道什么,为什么或什么时候选择 cshtml 更好,什么,为什么或什么时候选择 aspx 技术更好?这两种技术的目的是什么?

谢谢,

147066 次浏览

Cshtml 文件是 Razor 使用的文件,它们的主要优点是可以在单元测试中呈现。对这个话题的各种回答将带来许多其他有趣的观点。

Razor 是 ASP.NET MVC 的 视图引擎,也是 模板引擎。Razor 代码和 ASP.NET 内联代码(与标记混合的代码)都是首先编译的,并在执行之前转换为临时程序集。因此,就像 C # 和 VB.NET 都编译成 IL,这使得它们可以互换一样,Razor 和 Inline 代码也是可以互换的。

因此,它更多的是一个风格和兴趣的问题。我更喜欢剃刀,而不是 ASP.NET 内联代码,也就是说,我更喜欢剃刀(cshtml)页面。Aspx 页面。

假设你想得到一个 Human类,然后渲染它,在 Cshtml文件中你写:

<div>Name is @Model.Name</div>

而在 阿斯伯格综合症文件中,你写道:

<div>Name is <%= Human.Name %></div>

正如您所看到的,剃刀的 @标志使得混合代码和标记更加容易。

正如其他人所回答的,.cshtml(或者 .vbhtml,如果你喜欢的话)提供了一个处理程序映射来加载 MVC 引擎。.aspx扩展只是加载 aspnet _ isapi.dll,它执行编译并提供 Web 表单。处理程序映射的不同之处仅仅是允许两者在同一服务器上共存的一种方法,这种方法允许 MVC 应用程序和 WebForms 应用程序共存于同一个根目录下。

这使得 http://www.mydomain.com/MyMVCApplication作为一个标准的 web 表单是有效的,并且与 MVC 规则一起使用 http://www.mydomain.com/MyWebFormsApplication

编辑:
至于技术上的差异,MVC (Razor)模板框架打算返回。Net 页面到一个更 RESTful 的“基于 web 的”模板化视图平台,该平台将模型(业务/数据对象)、视图(用户看到的)和控制器(两者之间的连接)之间的代码逻辑分离开来。WebForms 模型(aspx)是微软尝试使用复杂的 javascript 嵌入来模拟一个更有状态的应用程序,这个应用程序类似于 WinForms 应用程序,具有完整的事件和页面生命周期,能够在页面之间保持自己的状态。

选择使用一种或另一种总是有争议的,因为有支持和反对两种系统的论据。我个人喜欢 MVC 架构的简单性(尽管路由一点也不简单)和 Razor 语法的简单性。我觉得 WebForms 架构太过沉重,无法成为一个有效的 Web 平台。也就是说,在很多实例中,WebForms 框架提供了一个非常简洁和可用的模型,其中包含定义良好的丰富事件结构。这一切都归结为应用程序的需求和构建它的人员的偏好。

虽然 Razor (.cshtml/.vbhtml)和 WebForms (.aspx/.ascx)之间的语法肯定是不同的(Razor 更简洁和现代) ,但没有人提到,虽然它们都可以用作视图引擎/模板引擎,但传统的 ASP.NET Web Forms 控件可以用于任何。Aspx 或。Ascx 文件(即使与 MVC 架构内聚)。

这是相关的情况下,长期存在的解决方案,一个问题已经建立并打包成一个可插组件(例如,大文件上传控件) ,你想使用它在 MVC 网站。有了剃刀,你不能这么做。但是,您可以执行与传统 ASP.NET 体系结构使用 Web Form 视图相同的所有后端处理。

此外,ASP.NET web 表单视图可以有 Code-Behind 文件,这允许将逻辑嵌入到与视图一起编译的单独文件中。虽然软件开发社区正在成长为紧密耦合的体系结构和 智能客户端模式是不好的做法,它曾经是做事情的主要方式,并且仍然是非常可能的。Aspx/.Ascx 文件。雷泽故意没有这种品质。