设为首页 加入收藏

TOP

MVC4 Razor @RenderSection - 母版页设置
2015-07-20 17:46:35 来源: 作者: 【 】 浏览:2
Tags:MVC4 Razor @RenderSection 设置

Mvc4的Razor视图引擎还提供了@RenderSection

我的理解:@RenderSection在母版页中占个位,然后让使用此母版页的子页自己去呈现他们的Section。

在母版页_Layout.cshtml中定义@RenderSection("Section名")

    
  
    
  
    
  
@RenderBody()

添加一个About.cshtml,使用_Layout.cshtml做母版页
然后就可以在About.cshtml中定义"SubMenu"要呈现的内容

@{
    ViewBag.Title = "About";
 }
 @section SubMenu{
    Hello This is a section implement in About View.
 }

这里我在About.cshtml中实现了SubMenu,运行结果

\

但是当如果使用了_Layout.cshtml做母版页的页没有实现Section的话,

譬如我新建的Index.cshtml没有实现@section SubMenu{...},就会抛出异常

\

这是因为我在_Layout.cshtml中使用的是@RenderSection("SubMenu")他要求所有子页都要实现,

可以使用它的另外一个重载@RenderSection("SubMenu",false),第二个参数代表它不是必须的,就不会抛出异常。


还有,当我在母版页中定义了@RenderSection("SubMenu",false)的时候,我希望当所有子页都没有实现这个Section

的时候,母版页可以有自己的呈现内容,就可以用

  
这样当没有任何页面呈现Section的时候,就会默认显示定义的内容。

-----------------------------------------------------------------------------------

还有一种比较灵活的方法,通过扩展方法来实现

public static class Utility
    {
        public static HelperResult RenderSection(this WebPageBase page, string sectionName, Func
  
    defaultContent)
        {
            if (page.IsSectionDefined(sectionName))
            {
                return page.RenderSection(sectionName);
            }
            else
            {
                return defaultContent(null);
               
            }
        }
    }
  
在母版页中
@this.RenderSection("SubMenu", @
  
default section content
)
OK了!没有呈现Section时,就默认显示
  
default section content

.

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU 1394 Minimum Inversion Numb.. 下一篇OpenStack 网络总结之:理解GRE隧..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C语言中如何将结构体 (2025-12-24 22:20:09)
·纯C语言结构体成员变 (2025-12-24 22:20:06)
·C语言中,指针函数和 (2025-12-24 22:20:03)
·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)