代码改变世界

asp.net mvc3关于section 的一个小bug

2011-08-18 16:10  shaofeng  阅读(1984)  评论(7编辑  收藏  举报

首先我们建一个_layoutA.cshtml

内容如下

1 @{
2     ViewBag.Title = "_LayoutA.cshtml"
3     Layout = null;
4  }
5 @RenderSection("Header"false)

6 @RenderBody()  

 

再建一个子页面 _LayoutAChild.cshtml

 内容如下

1 @{
2      ViewBag.Title = "ViewPage1";      
3      Layout = "~/Views/Shared/_LayoutA.cshtml"

4 }

childpage

6 @RenderBody()

 

最后我们建一个最终显示页面 Detail.cshtml

 1  @{       

2     Layout ="~/Views/Shared/_LayoutAChild.cshtml";
3 } 
4@section Header 
5{
6     头信息
7 }

 运行调试,这个时候问题出来了

以下各节已定义,但尚未为布局页“~/Views/Shared/_LayoutAChild.cshtml”呈现:“Header”

 说明他只能找到父布局页的section,再上一级就无法找到了,然后我们怎么解决呢?

 

 我们再回到_LayoutAChild.cshtml页面,增加如下信息

 

1  @section Header       

2{
3     @if (IsSectionDefined("Header"))
4      {
5          @RenderSection("Header")
6      } 
7}

调用父section的时候再调用 

RenderSection这个节点,这个时候,问题就解决了。