.net mvc布局——layout.cshtml中 @RenderSection()和@RenderBody()的使用

_Layout.cshtml类似WebForm中的.master文件

_Layout.cshtml母版页代码:

<!DOCTYPE html>
<html lang="zh">
    <head>
        <title>@ViewBag.Title - 我的 ASP.NET MVC 应用程序</title>    
    </head>
    <body>       
        <div id="body">
            @RenderSection("featured", required: false)
            <section class="content-wrapper main-content clear-fix">
                @RenderBody()
            </section>
        </div>
        <footer>
            <div class="content-wrapper">
                <div class="float-left">
                    <p>&copy; @DateTime.Now.Year - 我的 ASP.NET MVC 应用程序</p>
                </div>
            </div>
        </footer>
        @Scripts.Render("~/bundles/jquery")
        @RenderSection("scripts", required: false)
    </body>
</html>

在Home控制器中添加TestRenderBody,并添加视图

 public ActionResult TestRenderBody()
        {
            ViewBag.Message = "这是RenderBody内容";
            return View();
        }
@{
    ViewBag.Title = "TestRenderBody";
}

<h2>@ViewBag.Message</h2>

访问视图  home/TestRenderBody:

前后对比html源码,发现只是将 TestRenderBody视图放到了_Layout.cshtml中的@RenderBody()中了

在layout.cshtml中添加一个 所有页面都可以使用的 footer @RenderSection , 

<footer>
            <div class="content-wrapper">
                @if (IsSectionDefined("footer"))//如果存在 section footer则展示此页面的footer内容
                {
                     @RenderSection("footer", required: false)//requiered为fasle子页面可以没有此footer,若设置为true则子页面必须添加,否则报错
                }
                else//没有则默认显示此footer
                {
                    <p>此页面没有定义footer</p>
                }               
                <div class="float-left">
                    <p>&copy; @DateTime.Now.Year - 我的 ASP.NET MVC 应用程序</p>
                </div>
            </div>
        </footer>

在TestRenderBody.cshtml中添加

@{
    ViewBag.Title = "TestRenderBody";
}

<h2>@ViewBag.Message</h2>
@section footer{
    <p>我是此页面的页脚</p>
    }

效果为:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值