注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天涯倦客的博客

祝福你朋友永远快乐!

 
 
 

日志

 
 

MVC3 On Razor使用(1):基础部分  

2011-07-26 14:39:56|  分类: MVC |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
微软在10号发布了ASP.NET MVC3的发布候选版(RC:Release-candidate),该版本提供了Razor视图引擎的智能感知等功能,并同样具备Online许可。

  特意下载安装了下,下载地址:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a920ccee-1397-4feb-824a-2dfefee47d54&displaylang=en

  试用了传说中强大的Razor引擎,实在是太棒了。下面是我的一些使用学习体会:

  一、Razor基础简介

  Razor采用了cshtml后缀的文件名,截图如下:

MVC3 On Razor使用(1):基础部分

  A、 版面布局

  从图上看到,新的视图引擎已经没有了Site.Master这种MasterPage了,取而代之的是_Layout.cshtml和_ViewStart.cshtml。

  _Layout.cshtml等同于MasterPage;如下图所示:

MVC3 On Razor使用(1):基础部分

    查看原图(大图)

  这个_Layout.cshtml文件中已没有了MasterPage中<asp:ContentPlaceHolder ID="MainContent" runat="server" />的标签语句了,取而代之的是

  @RenderBody():呈现子页的主体内容

  @RenderSection():呈现特别的节部分。

  HelperResult RenderSection(string name, bool required = true);

  required默认为true必须覆写,设为false则为可选覆写;

  注意的是:该函数在RC版中参数有所改变,参数中optional改为required,据说和VB的关键字冲突

编缉推荐阅读以下文章

下图则为我在子页的页脚部分覆写,在子页实现时,使用@section 自定义节名{ }格式。

MVC3 On Razor使用(1):基础部分

  如果我们想在父页里写一个默认实现节,在子页作为可选实现该怎么做呢?

  这个在MasterPage是直接支持的,但在Razor里就要稍显复杂些,个人觉得这种写法还可以改进下;

  如下图所示,我在父页写了一个默认的页脚实现,如果子页有实现则使用子页实现,没有就用默认实现。

  这里要先通过bool IsSectionDefined(string name)函数判断是否有子页实现,有则调用子页实现。

MVC3 On Razor使用(1):基础部分

  _ViewStart.cshtml:该页面可以理解为其它View的基类。它默认的代码就3行如下所示:

MVC3 On Razor使用(1):基础部分

  在该页面里定义了其它View的默认MasterPage是“~/Views/Shared/_Layout.cshtml”;

  当然在这里还可以定义一些公用的函数及变量,以供其它页面可以直接调用。

  B、与ASPX语法的区别

  ASPX:<% %> 

  Razor:@{ }

  这两种都是代码块的编写符号,只不过用Razor会让代码更加简洁和舒适,下图为对比语法:

MVC3 On Razor使用(1):基础部分

  ASPX:<%= %> 

Razor:@

  在Razor中,你只需要用一个”@”字符就可以标识代码块的开始,它能够自动判断后面变量的结束位置,如下图对比看出,使用Razor语法,少写了不少代码。

MVC3 On Razor使用(1):基础部分

MVC3 On Razor使用(1):基础部分

  而且,Razor解析器内置了很多语言的智能.

  大部分情况下,Razor解析器都有足够的能力推导出模板里的一个“@”字符到底是在代码中用到,还是在静态内容中用到。

  例如,我在下例中的邮件地址中使用了”@”字符,则scottgu@microsoft.com被解析为静态内容,而@DateTime.Now被解析代码执行了,很强大吧!

  如果碰到和代码一样格式的内容(或者你想把代码当作内容看待),你可以显式地打@@来用另外一个”@”字符进行转义。

MVC3 On Razor使用(1):基础部分

  ASPX:<%: %> 

  Razor:@()

  这两种语法都能实现内容的编码,只不过Razor更为方便一些,如下图所示:

MVC3 On Razor使用(1):基础部分

MVC3 On Razor使用(1):基础部分

  评论这张
 
阅读(957)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017