博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Razor语法大全
阅读量:5248 次
发布时间:2019-06-14

本文共 3009 字,大约阅读时间需要 10 分钟。

Razor是基于framewor4以上写的一个开源项目:https://github.com/Antaris/RazorEngine/

Razor是包含了模板引擎和动态编译两部分。本部分就简单记录了模板引擎的一些语法,之后用Razor做一个代码生成器,就使用Razor的语法来。

Razor的发布是和MVC一起的,作为MVC的视图模板引擎。

 

Razor文件类型

   Razor可以在vb.net和C#中使用。分别对应了两种文件类型,.vbhtml和.cshtml 

 

Razor的标识符

    @字符被定义为Razor服务器代码块的标识符,后面的表示是服务器代码了。web form中使用<%%>中写服务器代码一个道理。在vs工具里面提供了代码着色和智能感应的功能。如下面代码:

@{
string userName= "邓星林";} @userName @DateTime.Now.ToString("yyyy-MM-hh")

 

Razor的作用域

     在上面一个例子中都已经使用到了大括号{},不错,大括号里面的就是表示作用域的范围,用形如@{code}来写一段代码块。

@{    string userName= "邓星林";    @userName}

在作用域(代码块)中输出也是用@符号的。

 

用Razor和html代码混合编写

   在Razor中写html代码和html代码中写Razor语句都是可以的,并且还有智能提示。

   a.在作用域内如果是以html标签开始则视为文本输出

   b.如果要输出@,则使用@@

   c.如果要输出非html标签和非Razor语句的代码,则用@:,他的作用是相当于在处于html下面编写一样了,如在@:后面可以加上@就是表示Razor语句的变量

 如:

@{    var str = "abc";        ////下面会输出:this is a mail:dxl0321@qq.com, this is var: abc,this is mail@str,this is @;    @: this is a mail:dxl0321@qq.com, this is var: @str,this is  mail@str,this is @@;    //下面输出abc    @str  }

Razor作用块注释

    razor作用块里面本身就是服务器代码了,因此可使用服务器代码的注释,注释有//和/**/分别是单行注释和多行注释。

   另外razor注释还可以使用自身特有的@* 注释的内容 *@,支持单行和多行的。

@{   @*       多行注释       多行注释   *@   var i = 10;  @* asdfasf *@}

Razor类型转换

         As系列扩展方法和Is系列扩展方法

          AsInt(), IsInt()

      AsBool(),IsBool()

      AsFloat(),IsFloat()

     AsDecimal(),IsDecimal()

      AsDateTime(),IsDateTime()

    ToString()

@{    var i = “10”;}

i = @i.AsInt()

 

razor其它

  @Href("~/")//表示网站的根目录

  @Html.Raw(Module.Content)  输出HTML,如:@Html.Raw('<font color='red'>红字</font>'),就会显示出红色的”红字“,不用的话会直接显示这段html字符串(<font color='red'>红色文字</font>)

 

 

 

在实际中,比如一个网站,整过框架是一样的,而有的地方是很多相同的版块。因此我们需要复用。

 

布局(Layout)

   layout方式布局就是相当于一个模板一样的,我们在它地址地方去添加代码。相当于定义好了框架,作为一个母版页的,在它下面的页面需要修改不同代码的地方使用@RenderBody()方法

            
我的网站 - @Page.Title @RenderBody()
@{    Layout = "/LayoutPage.cshtml";    Page.Title = "测试页面哦";}

This is a layout test

 

页面(Page)

 page是当需要在一个页面中,输出另外一个razor文件的内容时候用到,比如头部或者尾部这些公共的内容时候需要用到。输出就使用 @RenderPage()方法

如:A页面中也要把B页面的内容输出

A页面:

@RenderPage("/b.cshtml")

b页面的代码如下:

这是一个子页面

 

Section区域

    Section是定义在Layou的中使用的。在Layout的页面中用。在要Layout的父页面中使用@RenderSection("Section名称 ")

定义:

            
我的网站 - @Page.Title  @RenderSection("SubMenu") @RenderBody()

在它的子页面中使用

@section SubMenu{    Hello This is a section implement in About View. }

 如果在子页面中没有去实现了SubMenu了,则会抛出异常。我们可以它的重载@RenderSection("SubMenu", false)

@if (IsSectionDefined("SubMenu"))        {            @RenderSection("SubMenu", false)        }        else        {            

SubMenu Section is not defined!

}

 

 Helper

   helper就是可以定义可重复使用的帮助器方法,不仅可以在同一个页面不同地方使用,还可以在不同的页面使用。

如在cshtml中那么写:

@helper sum(int a,int b){     var result=a+b;   @result  }

@@helper的语法

2+3=@sum(2,3)

5+9=@sum(5,9)

我们通常会把一类Helper放在一个单独的cshtml文件中,而文件名就相当于一个类名。

我把sum放在HelpMath.cshtml文件中,则我们在那上面cshtml中的使用方法是:

2+3=@HelpMath.sum(2,3)

5+9=@HelpMath.sum(5,9)

另外,系统还为我们提供了一些列的Helper,用来简化Html的书写。这些Helper放在@Html中,我们可以方便的使用:

@Html.TextBox("txtName")

 本文页面来源地址:

转载于:https://www.cnblogs.com/fhlj/p/3613544.html

你可能感兴趣的文章
turtle库基础练习
查看>>
OpenCV--用读取矩阵,访问图像数据
查看>>
[转]TTF字体文件裁剪(支持简体中文,繁体中文TTF字体裁剪)
查看>>
【Spark】Spark-foreachRDD需要注意的问题
查看>>
pygame安装
查看>>
框架部分综合
查看>>
android学习笔记11——ScrollView
查看>>
URL
查看>>
ngOptions
查看>>
python globals和locals
查看>>
结对项目--地铁出行路线规划程序(续)
查看>>
poj 1663 Number Steps
查看>>
闭包再学习、发表评论
查看>>
初始用户组,有效用户组,初始用户,有效用户
查看>>
wait函数返回值总结,孤儿进程与僵尸进程[总结]
查看>>
jmeter对响应数据做断言
查看>>
luogu P3916 图的遍历
查看>>
C/JS_实现冒泡排序
查看>>
Codeforces731E Funny Game
查看>>
linux bash shell 判断目录是否为空的函数
查看>>