Bas*_*mme 103 asp.net asp.net-mvc razor
我想知道什么,为什么或何时更好地选择cshtml以及选择aspx技术的原因是什么,为什么或何时更好?这两种技术的目的是什么?
谢谢,
Joe*_*ton 106
正如其他人已经回答的那样.cshtml
(或者.vbhtml
如果这是你的风味)提供了一个处理程序映射来加载MVC引擎.该.aspx
扩展只加载执行编译并提供了网络形式ASPNET_ISAPI.DLL.处理程序映射的区别仅仅是允许两者在同一服务器上共存的方法,允许MVC应用程序和WebForms应用程序在共同的根目录下生存.
这允许http://www.mydomain.com/MyMVCApplication有效并与MVC规则以及http://www.mydomain.com/MyWebFormsApplication一起提供,以作为标准Web表单有效.
编辑:
至于技术上的差异,MVC(Razor)模板框架旨在将.Net页面返回到更加REST的"基于Web"的模板化视图平台,将模型(业务/数据对象)之间的代码逻辑分开,视图(用户看到的内容)和控制器(两者之间的连接).WebForms模型(aspx)是Microsoft尝试使用复杂的javascript嵌入来模拟更有状态的应用程序,类似于WinForms应用程序,其中包含事件和页面生命周期,能够在页面之间保留自己的状态.
使用其中一个的选择总是有争议的,因为支持和反对这两个系统都存在争议.我喜欢MVC架构中的简单性(尽管路由不是简单的)和Razor语法的简易性.我觉得WebForms体系结构太重了,无法成为一个有效的Web平台.话虽如此,有很多实例,WebForms框架提供了一个非常简洁和可用的模型,其中包含一个定义良好的丰富事件结构.这一切都归结为应用程序的需求和构建它的人的偏好.
Sae*_*ati 42
Razor是ASP.NET MVC 的视图引擎,也是模板引擎.Razor代码和ASP.NET内联代码(与标记混合的代码)都先被编译,然后在执行之前变成临时程序集.因此,就像C#和VB.NET都编译到IL一样,它们可以互换,Razor和Inline代码都是可互换的.
因此,它更多的是风格和兴趣.我更喜欢剃刀,而不是ASP.NET内联代码,也就是说,我更喜欢Razor(cshtml)页面到.aspx页面.
想象一下,你想要一个Human
类,并渲染它.在你写的cshtml文件中:
<div>Name is @Model.Name</div>
Run Code Online (Sandbox Code Playgroud)
在aspx文件中,你写道:
<div>Name is <%= Human.Name %></div>
Run Code Online (Sandbox Code Playgroud)
如您所见,@
剃须刀的标志使得混合代码和标记变得更加容易.
sma*_*man 10
虽然Razor(.cshtml
/ .vbhtml
)和WebForms(.aspx
/ .ascx
)之间的语法肯定不同,(Razor是两者中更简洁和现代的),没有人提到虽然两者都可以用作View Engines/Templating Engines,传统的ASP.NET Web窗体控件可用于任何.aspx或.ascx文件(甚至与MVC架构的内聚).
这与已建立问题的长期解决方案并打包到可插入组件(例如大文件上载控件)并且您想要在MVC站点中使用它的情况相关.使用Razor,你无法做到这一点.但是,您可以执行与使用Web窗体视图的传统ASP.NET体系结构相同的所有后端处理.
此外,ASP.NET Web窗体视图可以具有Code-Behind文件,这允许将逻辑嵌入到与视图一起编译的单独文件中.虽然软件开发社区越来越多地将紧密耦合的体系结构和智能客户端模式视为不良实践,但它曾经是主要的处理方式,并且仍然可以使用.aspx/.ascx文件.Razor故意没有这样的品质.
归档时间: |
|
查看次数: |
128846 次 |
最近记录: |