天天看点

C# Mvc.net 3.0 Razor Leyout布局视图使用介绍

测试需要一个主页入口点,这里使用默认的路由设置就可以测试。
1.首先在默认的 homecollector 中建立一个 action,如下
    public ActionResult index()
     {
       return View();
     } 
2.在 view/home 文件件下建立 MyLeyout.cshtml 视图,内容如下
@{
     //some code
 }
 <!DOCTYPE html><html>
 <head>
     <title>@ViewBag.Title</title>
 </head>
 <body>
     <div>
         开始渲染Body<br />
         @RenderBody()
         渲染Body结束<br />
         <br />
         开始渲染 ViewPage1<br />
         @RenderPage("~/Views/Home/ViewPage1.cshtml")
         结束渲染 ViewPage1<br />
         <br />
         开始渲染 ViewPage2<br />
         @RenderPage("~/Views/Home/ViewPage2.cshtml")
         结束渲染 ViewPage2<br />
         <br />
         学习Section用法了<br />
         开始渲染Section<br />
         声明方式1(推荐):SectionA:<br />
         @*引用页无标记也不会异常,第二个叁数如果为 true 则要求引用页必须存在 SectionA 标签*@
         @RenderSection("SectionA", false)
         -------<br />
         
         声明方式2:SectionB:<br />
           @{
               //判断是否存在标记 SectionB
               if (IsSectionDefined("SectionB"))
               {
                   @RenderSection("SectionB")
               }
           }
         -------<br />
         
         声明方式3:SectionC:<br />
           @{
             //我们测试没有定义过的 SectionC,页面将出现异常
             //@RenderSection("SectionC") //测试时将注释打开
           }
         -------<br />
         渲染Sction结束<br />
     </div>
 </body>
 </html>  
3.在view/home 文件夹下建立一个 index.cshtm 文件,内容如下
 
@{
   ViewBag.Title = "首页";
   Layout = "~/Views/home/MyLeyout.cshtml";
 }
 <!--
 渲染整个页面到 ~/Views/EBusiness/MyLeyout.cshtml 中的 RenderBody() 占位符
 -->
 <div>
     这里就是渲染Body啦.
 </div><!--
  ~/Views/EBusiness/MyLeyout.cshtml 中的 RenderSection("SectionA", false) 占位符需要的 siction 定义
 -->
 @section SectionA{
     <div>这里是SectionA: 在 index 页中声明的</div>
 }<!--
  ~/Views/EBusiness/MyLeyout.cshtml 中的 RenderSection("SectionB") 占位符需要的 siction 定义,注意使用 IsSectionDefined("SectionB") 判断一下
 -->
 @section SectionB{
     <div>这里是SectionB: 也是在 index 页中声明的</div>
 }<!--
  ~/Views/EBusiness/MyLeyout.cshtml 中的 RenderSection("SectionC") 占位符,
  这里没有定义,如果代码注释打开就报异常了,以为没有做判断占位符是否存在。
 -->4.同上位置,建立 ViewPage1.cshtml 视图

@{
   //ViewBag.Title = "首页";
   Layout = null;
 }
 <!--
 渲染整个页面到 ~/Views/EBusiness/MyLeyout.cshtml 中的 RenderPage() 占位符 ,RenderPage 占位符可以使用多次
 -->
 <div>
     这里就是渲染 viwpage1.chatml 的所有内容了
 </div>
5.同上位置,建立 ViewPage2.cshtml 视图 ,证明 RenderPage() 占位符可以多次声明
 
@{
   //ViewBag.Title = "首页";
   Layout = null;
 }
 <!--
 渲染整个页面到 ~/Views/EBusiness/MyLeyout.cshtml 中的 RenderPage() 占位符 ,RenderPage 占位符可以使用多次
 -->
 <div>
     这里就是渲染 viwpage2.chatm2 的所有内容了
 </div>万事具备就差测试了,录入网址 ​​http://170.0.0.1/home/index​​ 
看着代码又多又乱,看看注释应该可以明白的