EF5+MVC4系列(9) Razor视图引擎的核心原理;@符号的使用;输出html的转义

一:Razor视图引擎的核心原理

Razor是ASP.NET MVC 3中新加入的技术,以作为ASPX引擎的一个新的替代项 ,他是一个视图引擎

他的核心原理,就是当读取到 @符号的时候,就认为这是开始c#代码,并且 会自动寻找 {  } 作为开始和结束.但是当他不管在任何地方碰到<> 和 </>的时候,就不会当做是c#代码,而是当做html代码,我们会看到,在真正生成的 视图类代码里面  <span>xx</span>  会直接被 Response.Write(“<span>xx</span>”)

疑问,Razor是能自动识别html么? 答案,不能,他是根据 <>和</> 这种尖挂号来识别的, 例如你写成 <joey>我随便写的标签</joey> 他也会识别成html代码,这里有个注意事项就是,如果是单标签 </br>  他也是可以识别成html的

 

 

二: 在前台视图中  @符号的使用

2.1 : 后面跟一个有返回值的,那么就会直接输出变量值

image

 

 

2.2: 后面跟一个大括号,用于保存变量

image

 

 

2.3: 如果@后面调用的方法是没有返回值的,那么要用大括号

image

 

 

2.4 : 用Html.Raw 和 MvcHtmlString.Create 来禁止转义

image

前台显示如下

image

实际的html 是

image

 

2.5 : 用helper来定义一个方法

image

前台生成的html是

image

注意,当我们查看源码的时候发现,我们用  Helper 创建的方法,会在 视图的前台页面类里面,添加了一个返回值为 HelperResult 的方法

image

2.6 @用小挂号的情况 ()

一种特殊情况,我后台有个变量为 ViewBag.Cname=”aa”;

然后我在前台视图里面,想输出 aa . Cname  这个时候就需要在前台用到 () 小挂号 把前面的一部分当做是变量

image

image

前台生成值就把  ViewBag.Cname的值输出为 aa  并且在后面加了 .Cname 这个字符串

image

 

原文地址:https://www.cnblogs.com/joeylee/p/3859778.html