.NET MVC 两种视图引擎(Razor、Aspx)

ASPX

优点:

通过上面小小的对比,不难看出,与ASP.NET MVC紧密集成,对于以往ASP.NET开发人员有更好体验。其实它还有其他几优点:

●智能感应

●能选择其它语言的 CodeDom provider (例如: C#, VB.NET, F#, Boo, Nemerle)

●立即编译或预编译的views

缺点:

当然也有缺点了:

●在Asp.net MVC中容易与经典的Asp.net模式混淆起来,并且Asp.net MVC已不再支持它们。 (例如: ViewState PostBack)

●智能感应强迫样式总是不在内联的代码块。

●设计简单模板时会凌乱。

Razor

优点:

●结构紧凑,表达式流畅

●易于学习

●具有很好的智能感知

●可以单元测试

缺点:

●创建一个稍微轻量级的“标签团”问题。服务器端标签实际上提供了围绕服务器的结构代码和非服务器端代码,Razor混淆HTML和服务器端代码,纯HTML和JS的开发具有挑战性。

●语法是面向HTML生成非HTML的内容可能会非常棘手。尽管这样,Razor的数据模型实际上只是字符串串联,语法和嵌套错误,既不是静态或动态检测,虽然VS.NET设计时帮助减轻这个有确点。可维护性和可重构性也受限于此。

总之:

如果习惯了在WebForm中,在前台写代码,那么aspx引擎更熟悉。Razor引擎简化了输入,直接@就可以开始写代码了,显得更简洁。推荐Razor,语法更人性化。

语法代码示例,简单对比这两者区别


语法名称


Razor 语法


Aspx 等效语法


代码块(服务端)


@{ int x = 123; string y = "test."; }


<% int x = 123; string y = "test."; %>


表达式


encode:<p>@model.Message</p>

no encode:<p> @Html.Raw(model.Message)</p>


encode:<p><%:model.Message %></p>

no encode:<p><%= model.Message %></p>


结合文本和标记的循环


@foreach(var item in items)

{

<p>@item.Prop</p>

}


<% foreach(var item in items)

{ %>

<p><%:item.Prop %></p>

<% } %>


代码和文本混合


@if (foo) { <text>Plain Text</text> }

@if (foo) { @:Plain Text is @bar }


<% if (foo) { %> Plain Text <% } %>


服务器端注释


@* This is a server side multiline comment  *@


<%-- This is a server side multiline comment --%>


调用一个方法


@(MyClass.MyMethod<AType>())

使用括号来明确表达是什么.


混合表达式和文本


Hello @title. @name.


Hello <%: title %>. <%: name %>.

时间: 2024-10-12 11:46:40

.NET MVC 两种视图引擎(Razor、Aspx)的相关文章

Asp.net MVC 移除视图引擎(WebFormViewEngine或者RazorViewEngine)

ASP.NET MVC 有两种视图引擎,分别asp.net语法的:WebFormViewEngine 与Razor视图的新语法:RazorViewEngine. 在MVC默认查找视图时,会按照指定的顺序查找,进行匹配视图,当我们的MVC程序未找到视图时,页面中会出现错误信息: 看到图片由可可知,它会先执行webfrom视图引擎查找,其次才是razor视图引擎,而现在ASP.NET MVC 项目通常只所有一种视图引擎就 已经足够了.如果是这样的话,另外一种视图引擎显得多余了,(里面多少也会给性能带

(转)Asp.Net Mvc视图引擎Razor介绍

Asp.Net Mvc视图引擎Razor介绍 1.Razor介绍 程序园原创,转载请注明:http://www.kwstu.com/ArticleView/dabaomvc_201408240820545275 1)ASP.NET MVC3 带来了一种新的名为Razor 的视图引擎,提供了下列优点: Razor 的语法简单且清晰,只需要最小化的输入 Razor 容易学习,语法类似于 C# 和 VB Visual Studio 对于 Razor 提供了智能提示和语法着色 Razor 视图不需要允许

ASP.NET的另一个视图引擎——Razor

 一.什么是Razor? 要是你知道什么是ASPX,那我就告诉你:Razor是和ASPX 一样的另一种视图引擎.说到视图就明白了很多吧.既然都为视图引擎,都是MS的东西,两个视图引擎,一前一后,肯定有区别.那么接下来让我们来认识一下Razor吧. 首先,Razor是作为一种后起的视图模板被ASP.NET MVC3使用. 这就暴露了Razor的一个重要信息:界面设计灵活,比aspx视图引擎更专注于WEB前端页面的设计.因为MVC就是基于WEB开发所诞生的一个设计模式,主旨之一就是将页面和业务逻辑解

谈谈MySQL两种存储引擎

Mysql有两种存储引擎:InnoDB与Myisam 二者之间有六大区别:   MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件.第一个 文件的名字以表的名字开始,扩展名指出文件类型..frm文件存储表定义.数据文件的扩 展名为.MYD (MYData).索引文件的扩 展名是.MYI (MYIndex). 基于磁盘的资源是InnoDB表空间数据文件和它的日志文件,InnoDB 表的 大小只受限于操作系统文件的大小,一般为 2GB 事务处理上方面: MyISAM类

MySQL - 两种存储引擎 (MyISAM PK InnoDB) + MVCC

总结 1.两种存储引擎各有各的有点,MyISAM专注性能,InnoDB专注事务.两者最大的区别就是InnoDB支持事务,和行锁. 2.InnoDB采用MVCC(Multi-Version Concurrency Control 多版本并发控制)来支持高并发,一种行级锁的变种.MVCC是通过保存数据在某一个时间点的快照来实现的,也就是说无论事务执行多久,每个事务看到的数据都是一致的.InnoDB的MVCC,是通过在每行记录后面保存两个隐藏的列来实现,这两个列一个保存了行的创建时间,一个保存了行的过

Asp.Net Mvc视图引擎Razor介绍

1.Razor介绍 1)ASP.NET MVC3 带来了一种新的名为Razor 的视图引擎,提供了下列优点: Razor 的语法简单且清晰,只需要最小化的输入 Razor 容易学习,语法类似于 C# 和 VB Visual Studio 对于 Razor 提供了智能提示和语法着色 Razor 视图不需要允许程序或者启动 Web 服务器就可以进行测试 2)Razor 现在提供了一些新的特征: @model 用来指定传到视图的 Model 类型 @* * 注释语法 对于整个站点可以一次性设定默认项目

转载:ASP.NET MVC扩展自定义视图引擎支持多模板&amp;动态换肤skins机制

ASP.NET mvc的razor视图引擎是一个非常好的.NET MVC框架内置的视图引擎.一般情况我们使用.NET MVC框架为我们提供的这个Razor视图引擎就足够了.但是有时我们想在我们的项目支持多模板&skins机制,比如我们可能会有多套的模板,也就是多个View风格,而我们只需要改一下配置文件就可以轻松的改变页面的风格和模板.实现这个功能有两种方式: 一.使用接口IViewEngine自己完成一个类似Razor视图引擎的功能. 二.继承类RazorViewEngine类,重写它的一些方

Mysql两种存储引擎的优缺点

MyISAM引擎是一种非事务性的引擎,提供高速存储和检索,以及全文搜索能力,适合数据仓库等查询频繁的应用.MyISAM中,一个table实际保存为三个文件,.frm存储表定义,.MYD存储数据,.MYI存储索引.  NULL值被允许在索引的列中. 如何查看表的存储引擎 SHOW TABLE STATUS FROM 数据库 WHERE Name = '表名' InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性, 因此

MySQL两种存储引擎: MyISAM和InnoDB 简单总结

MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然性能极佳,但却有一个缺点:不支持事务处理(transaction).不过,在这几年的发展下,MySQL也导入了InnoDB(另一种数据库引擎),以强化参考完整性与并发违规处理机制,后来就逐渐取代MyISAM. InnoDB,是MySQL的数据库引擎之一,为MySQL AB发布binary的标准之一.InnoDB由Innob