码迷,mamicode.com
首页 > 其他好文 > 详细

Razor语法

时间:2015-10-10 00:25:53      阅读:168      评论:0      收藏:0      [点我收藏+]

标签:

Razor并不是新的开发语言,它只是一种用在View页面代码区块的编写风格,所用的代码一样都是c#,因此开发人员不需要额外学习新的语言。

Razor基本语法

1、在view页面输出表达式或者单个变量,只要在c#语句前面加上 @ 符号,同时在c#语句前后加上括号razor表达式或者单个变量是不需要分号结尾的。范例如下:

  表达式:@(ViewBag.Name+ViewBag.Level)

  单个变量:@(DateTime.Now) 或者@DateTime.Now  (单个变量可以不加括号,建议加上)

2、在view页面执行多行代码,需要在c#语句前面加上 @ 符号,同时在c#语句前后加上大括号。执行多行代码其实是c#代码段,所以要符号c#语言规范,意味着每段要以分号结尾。范例如下:

  @{

    var  message="Hello,";

    var  name=message+"张三!";

  }

 

3、条件判断语句的if和else在razor中算作两个代码区块和循环语句也是算作一个代码区块,范例如下

 

条件语句

 

@if(判断条件)

 

{

 

   ......   @*代码区块*@

 

}

 

else

 

{

 

  ...... @*代码区块*@

 

}

 

 

 

循环语句

 

@foreach(循环)

 

{

 

  ......  @*代码区块*@

 

}

 

4、razor代码段中插入文字内容,必须在行的最前面加“@:”符号,而且加上“@:”符号的这行里也可以加上其他razor变量。范例如下:

  @{

 

    var  name="张三";

 

    @:你好,@name   @*这行输出的是html内容不是c#代码,所以不需要分号*@

 

  }

请注意:在razor语法中纯文字会被自动视为c#陈述句进行解析,如下例子:

  @{

    我是张三   @*这样写是错误的,”我是张三“纯文字被视为c#陈述句进行解析*@

  }

5、razor语法注释代码使用 "@*"和" *@"来当注释的头尾。

 

Razor和Html 混合输出

  如果razor代码段中需要输出大量文字,在每一行前面加上"@:"显然不是明智的做法。这时候只需要在文字区块的前后加上一组html标签即可,razor会智能的判断出这不是一段c#语法,而是一段html标签文字。如下范例:

@if(ViewBag.IsEnabled)

{

  <span>启用</span>

}

else

{

  <span>禁用</span>

}

这样所有文字内容都会在html标签里面(例子中是span标签),如果不想输出任何html标签可以使用特殊的 <text></text>标签来代替这个html标签。

 

View页面Razor和Html混合输出注意点

1、属性名称误判

有时候必须让html内容和razor变量紧紧连在一起,比如: 您好,@ViewBag.Name先生。如果这样写,最终输出:" 您好," 。因为这里razor将"@ViewBag.Name先生"当作变量解析。解决方式如下:

  • 在razor语法前加上括号, 您好,@(ViewBag.Name)先生。
  • 用html标签分隔,您好,<text>@ViewBag.Name</text>先生  或者  您好, @ViewBag.Name<text>先生</text>

2、输出Email地址和@字符

如果单独输出“@”字符,需要用 “@”字符作为转义字符,例子  @:@@张三 输出结果:@张三。

如果需要输出Email地址,只要正常输出Email地址就可以了。因为在razor智能解析中,只要“@”前面和后面都有文字(特殊符号不算),默认“@”就会停用razor解析,所以输出Email超链接例子如下:

  <a href="mailto:zhangsan@example.com">zhangsan@example.com</a>  

3、输出未经HtmlEncode的字串

使用razor输出变量,默认特殊符号都会被Html编码(HtmlEncode),这是为了保护网站不会遭受跨网站脚本攻击(xss)。如果解码,需要使用@Html.Raw()辅助方法。范例如下:

@Html.Raw(ViewBag.Description)

 

 

 参考:《asp.net mvc4 开发指南》

 

Razor语法

标签:

原文地址:http://www.cnblogs.com/KLXL/p/4862668.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!