MVC3 Razor @RenderSection

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

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

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

<body>
    <div id="header">@{Html.RenderAction("Menu", "Global");}</div>
    <div id="sideBar">
      @RenderSection("SubMenu")
    </div>
    <div id="container">@RenderBody()</div>
    <div id="footer">@{Html.RenderAction("Footer", "Global");}</div>
</body>

添加一个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

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

<div id="sideBar">
       @if (IsSectionDefined("SubMenu"))
        {
            @RenderSection("SubMenu", false)
        }
        else
        {
            <p>SubMenu Section is not defined!</p>
        }
 </div>

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

时间: 2024-08-18 22:12:17

MVC3 Razor @RenderSection的相关文章

Os X下 使用Xamarin创建Mvc3 Razor 遇到的一些问题

Xamarin新建了个Mvc3 Razor的项目 第一个遇到的问题 是有两个引用找不到了 System.Web.Helpers 据说是包含再System.Web.WebPages里面的 就重新引入了System.Web.WebPages 运行的时候 报错了 弄了很久 首先 自己手动引用几个Dll进来 再这个路径下面 找到并引用 这四个 然后修改 web.config下的 然后就跑起来了 感谢群里面的 大神们不吝赐教 特别感谢宇内 和 cc 大神的悉心指导  Os X下 使用Xamarin创建Mv

Asp.net MVC3 Razor语法小记

Asp.net MVC3 Razor语法小记 1.在MVC View中使用 三元运算符的方式:@(bool?"":"") 2.在@{}中输出一行:@:<html>.如果这一行的上下文在程序代码中则用:@Html.Raw(string.Format(""));而不是Html.Raw(); 3.Radio默认选中: @Html.RadioButtonFor(m => m.BookType, 0, new { @checked=&qu

[ASP.NET MVC3] Razor Chart的使用总结

ASP.NET3为我们带来了很多新特性,其中ChartHelper相当给力,介绍一下程序集里图表的功能,这个chart使用简单,且前台不需引用js脚本文件,可使用缓存文件,数据源方式很多,比较方便. 图表的类型有以下很多种:   成员名称 说明   Point 点图类型.   FastPoint 快速点图类型.   Bubble 气泡图类型.   Line 折线图类型.   Spline 样条图类型.   StepLine 阶梯线图类型.   FastLine 快速扫描线图类型.   Bar 条

MVC3 Razor模板引擎

1.单行代码书写 @代码 2.多行代码书写 @{ //@加个大括号就可以在里面写C#代码了. C#代码第一行 C#代码第二行 } 3.Razor模板引擎会自动判别代码块,但是当代码存在二义性的时候,可以用小括号澄清 @{ string name = "张三"; } // @name你好 报错当前上下文中不存在名称"name你好"*@ @(name)你好 再给一个例子,就是调用泛型方法的时候,尖括号会导致Razor转回标记,这个时候也可以用小括号澄清: @(Html.

ASP.NET MVC3 Razor 调试与预加载

目录(?)[-] 获取服务器信息 FormsAuthenticationSlidingExpiration 属性 MVC3预加载 在ASP.NET MVC3开发中,调试中怎么也是不可缺少的,那对于使用RAZOR的开发者而言, 如何调试,这也是需要需要掌握的内容,本节就介绍本块内容. MVC3 RAZOR中调试 如你所知,对于发布后的网站,调试往往是一件非常悲剧的事. 看看RAZOR中强大的打印功能 @ObjectInfo.Print(this.Context.User) 获取服务器信息 @Ser

MVC--ASP.NET MVC3 Razor With jQuery开始

最近在开发相关的C#项目,原来是学习VC++,对C#不是很了解.又不可能有时间全部过一遍,所以边学边开发. 项目采用的是MVC的开发模式. 在CODEPROJECT 里找到一些非常珍贵的资料.推荐大家有去看看. ASP.NET MVC3 Razor With jQuery For Beginners MVC--ASP.NET MVC3 Razor With jQuery开始

MVC4 Razor @RenderSection - 母版页设置

Mvc4的Razor视图引擎还提供了@RenderSection 我的理解:@RenderSection在母版页中占个位,然后让使用此母版页的子页自己去呈现他们的Section. 在母版页_Layout.cshtml中定义@RenderSection("Section名") <body> <div id="header">@{Html.RenderAction("Menu", "Global");}&l

MVC Razor @RenderSection -母版设置

Mvc4的Razor视图引擎还提供了@RenderSection 我的理解:@RenderSection在母版页中占个位,然后让使用此母版页的子页自己去呈现他们的Section. 在母版页_Layout.cshtml中定义@RenderSection("Section名") <body>    <div id="header">@{Html.RenderAction("Menu", "Global");

基于MVC3 Razor视图引擎的富文本运用

下载ueditor1_4_3-utf8-net,放到项目中 在view下的.cshtml页面中,引用: <script type="text/javascript" src="@Url.Content("~/Interface/ueditor1_4_3-utf8-net/ueditor.config.js")"></script> <script type="text/javascript" sr