关键词搜索

源码搜索 ×
×

ASP.NET MVC中的嵌套布局页

发布2013-12-25浏览23008次

详情内容

在WEB窗体模式中,用惯了母版页,并且常有母版页嵌套的情况。


而在MVC模式下,对应母版页的,称作为布局页。默认的布局页为 ~/Views/Shared/_Layout.cshtml。默认每个页面都会嵌于其中,因为在~/Views/_ViewStart.cshtml里已经写好:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

当然,这个应该可以改的,但一般没有必要。我的做法是,将_Layout.cshtml作为基本母版页,然后再在上面衍生出各种子母版页。以下分别是_Layout.cshtml和某一子布局页(_SingleContent_Layout.cshtml)的代码:

_Layout.cshtml

  1. @using common = www.AppCode.Common;
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <meta charset="utf-8" />
  6. <meta name="viewport" content="width=device-width" />
  7. <title>@common.GetTitle(ViewBag.IndependentTitle,ViewBag.Title)</title>
  8. @Styles.Render("~/Content/css")
  9. @Scripts.Render("~/bundles/modernizr")
  10. <!-- 子页插入到head的入口。相当于母版页里的ContentPlaceHolder -->
  11. @RenderSection("header", required: false)
  12. </head>
  13. <body>
  14. <div>
  15. <div id="ly_Top" class="ly_960">
  16. <div id="ly_User">
  17. <!-- 登录信息。相当于用户控件 -->
  18. @{Html.RenderAction("LoginInfo", "Partial");}
  19. </div>
  20. <div id="ly_Web">
  21. </div>
  22. </div>
  23. <div id="ly_NaviContainer">
  24. <div id="ly_Navi">
  25. <div class="ly_960">
  26. <div id="ly_Logo" οnclick="location.href='/'"></div>
  27. <div>
  28. <!-- 导航条。相当于用户控件 -->
  29. @{Html.RenderAction("Navi"
  30. , "Partial"
  31. , new { parentController = ViewContext.RouteData.Values["controller"].ToString() });}
  32. </div>
  33. </div>
  34. </div>
  35. </div>
  36. <div id="ly_Main">
  37. <!-- 输出嵌套页 -->
  38. @RenderBody()
  39. </div>
  40. </div>
  41. @Scripts.Render("~/bundles/jquery182")
  42. <!-- 子页插入到页面底部的入口。相当于母版页里的ContentPlaceHolder -->
  43. @RenderSection("scripts", required: false)
  44. </body>
  45. </html>

子母版页_SingleContent_Layout.cshtml

  1. @{
  2. Layout = "~/Views/Shared/_Layout.cshtml";
  3. }
  4. @section header{
  5. @Styles.Render("~/Content/SingleContent")
  6. @* 这是本子布局页的子页插入内容的入口,注意到没?它写在本子布局页插入母版页的入口处*@
  7. @RenderSection("header", required: false)
  8. }
  9. @section Scripts {
  10. @RenderSection("scripts", required: false)
  11. }
  12. <div class="content_box container">
  13. <div class="content_box_in">
  14. @RenderBody()
  15. </div>
  16. </div>

内容页index.cshtml

  1. @{
  2. ViewBag.Title = "Service";
  3. Layout = "~/Views/Shared/_SingleContent_Layout.cshtml";
  4. }
  5. <div class="service">
  6. <h2>服务条款</h2>
  7. </div>


参考文章:

http://www.cnblogs.com/haiyabtx/archivehttps://cdn.jxasp.com:9143/image/2012/06/12https://cdn.jxasp.com:9143/image/2545821.html




相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载