ASP.NET的另一个视图引擎——Razor
一、什么是razor?
要是你知道什么是aspx,那我就告诉你:razor是和aspx 一样的另一种视图引擎。说到视图就明白了很多吧。既然都为视图引擎,都是ms的东西,两个视图引擎,一前一后,肯定有区别。那么接下来让我们来认识一下razor吧。
首先,razor是作为一种后起的视图模板被asp.net mvc3使用。
这就暴露了razor的一个重要信息:界面设计灵活,比x视图引擎更专注于web前端页面的设计。因为mvc就是基于web开发所诞生的一个设计模式,主旨之一就是将页面和业务逻辑解耦。如果说aspx使用的很顺手的话,就没有必要在开发razor了,所以这里的razor是基于mvc设计的更适合web开发的视图引擎。
razor在减少代码冗余、增强代码可读性和vs 智能感知方面,都有着突出的优势。
看看razorde 特性吧:
· 紧凑、富有表现力和流畅:razor尽量减少一个文件里需要敲入的字符数,给你畅快淋漓的编码体验。与大部分模板的语法不同,你不会因为需要在html中标注服务器端代码块而中断敲代码的快感。代码分析器足够聪明,能够从你的代码里推断出是否为服务器端代码。这使得其简洁、富有表现力的语法输入能够干净,快速,有趣。
· 上手快: razor非常容易上手,你只需要了解很少的新东西就可以掌握它,使用你现有的语言和html知识就足够了。
· 不是一个新的编程语言:我们尽量避免为razor创建一个新的命令式语言。相反,我们希望让程序员只使用现有的c#/vb(或其它)编程语言知识就能使用razor,我们只不过在你选择的编程语言里,提供一个非常棒的基于模板生成html的标记语法。
· 可以使用任何文本编辑器编写:razor不要求什么特别的工具,使用老古董的文本编辑器也可以高效编程(“记事本”就不错)。
· 很好的智能感应输入提示:虽然razor不是专为某个工具或者代码编辑器设计的,但它在visual studio里还是有很赞的智能提示功能。我们将会升级visual studio 2010和visual web developer 2010使得它具有完整的编辑器智能提示功能。
· 便于单元测试:新的视图引擎支持对视图执行单元测试,不需要控制器(controller)或者web服务器,而且可以包含在任意的单元测试项目中—不需要单独的应用程序域(app-domain)。
二、razor语法的简单介绍
1、razor语法之@符号
@字符是razor中的一个重要符号,它被定义为razor服务器代码块的开始符号。如果我们希望在网页中输出一个变量,或者当前日期,我们可以使用如下代码:
@{string productname = "台灯";} @productname @datetime.now.tostring("yyyy-mm-hh")
2、razor语法之代码块定义
你可以使用@{code}来定义一段代码块。
@{ int num1 =10; int num2 =5; int sum = num1 + num2; @sum; }
在代码块中,我们编写代码的方式和通常服务器端代码的方式是一样的。另外,如果需要输出,例如上面的在页面中输出结果,我们可以使用@sum完成输出。另外,@(code)可以输出一个表达式的运算结果,上面的代码我们也可以写成这样:
@{ int num1 =10; int num2 =5; int sum = num1 + num2; @(num1 +num2); }
3、razor语法之代码混写
razor支持代码混写。在代码块中插入html、在html中插入razor语句都是可以的
@{ int num1 =10; int num2 =5; int sum = num1 + num2; string color ="red"; @sum }
4、razor语法之注释
这里所说的注释是指服务器端的注释,在razor代码块中,可以使用c#的注释方式来进行注释,分别是//:(单行注释)和/**/(多行注释)。
另外,razor还提供了一种新的服务器段代码注释,可以即注释c#代码,同时可以注释html代码,@**@,这种注释方式不受代码块的限制,在razor代码中的任何位置都可以
@* 这是一个注释 这个是注释 *@
三、aspx 和 razor对比
既然已经学习了aspx那么我们进行对比发信razor的优势。 下面将结合示例看看:
首先是aspx:
i=, str=
转换为:razor
@{ int i = 100; string str = "mzwu.com"; } i=@i,str=@str
可见,razor用@代替了,在输出单个变量值时,显得更简单。
number = ;
转换razor
@for (int counter = 0; counter number = @counter; }
从例子中可以看出,razor比aspx输的代码量少了,并且更智能,能自动分辨出c#代码和html。
到此只是简单的对比,发现razor的简洁,当然还有很多的不同,等着大家去用。
推荐阅读
-
ASP.NET Razor模板引擎中输出Html的两种方式
-
详解Asp.Net Core 2.1+的视图缓存(响应缓存)
-
详解ASP.NET MVC 利用Razor引擎生成静态页
-
ASP.NET MVC从视图传参到控制器的几种形式
-
ASP.NET Razor模板引擎中输出Html的两种方式
-
ASP.NET MVC从视图传参到控制器的几种形式
-
我来告诉你:VS2019开发ASP.NET Core 3.0 Web项目,修改视图后,刷新浏览器看不到修改后的效果怎么处理
-
创建基于ASP.NET core 3.1 的RazorPagesMovie项目(三)-已搭建基架的Razor页面解释和更新
-
详解ASP.NET MVC 利用Razor引擎生成静态页
-
详解Asp.Net Core 2.1+的视图缓存(响应缓存)