一: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 : 后面跟一个有返回值的,那么就会直接输出变量值
2.2: 后面跟一个大括号,用于保存变量
2.3: 如果@后面调用的方法是没有返回值的,那么要用大括号
2.4 : 用Html.Raw 和 MvcHtmlString.Create 来禁止转义
前台显示如下
实际的html 是
2.5 : 用helper来定义一个方法
前台生成的html是
注意,当我们查看源码的时候发现,我们用 Helper 创建的方法,会在 视图的前台页面类里面,添加了一个返回值为 HelperResult 的方法
2.6 @用小挂号的情况 ()
一种特殊情况,我后台有个变量为 ViewBag.Cname=”aa”;
然后我在前台视图里面,想输出 aa . Cname 这个时候就需要在前台用到 () 小挂号 把前面的一部分当做是变量
前台生成值就把 ViewBag.Cname的值输出为 aa 并且在后面加了 .Cname 这个字符串