ASP.NET MVCのネストされたレイアウトページ
3217 ワード
WEBフォームモードでは、マスターページを使い慣れており、マスターページがネストされている場合がよくあります.
MVCモードでは、マスターページに対応するものをレイアウトページと呼ぶ.デフォルトのレイアウトページは~/Views/Shared/_です.Layout.cshtml.~/Views/_にあるため、デフォルトでは各ページが埋め込まれます.ViewStart.cshtmlには次のように書かれています.
_Layout.cshtml
http://www.cnblogs.com/haiyabtx/archive/2012/06/12/2545821.html
MVCモードでは、マスターページに対応するものをレイアウトページと呼ぶ.デフォルトのレイアウトページは~/Views/Shared/_です.Layout.cshtml.~/Views/_にあるため、デフォルトでは各ページが埋め込まれます.ViewStart.cshtmlには次のように書かれています.
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
もちろん、これは変更できるはずですが、一般的には必要ありません.私のやり方は、Layout.cshtmlは基本マスターページとして用いられ,その後,各シードマスターページが派生する.以下、それぞれ_Layout.cshtmlとサブレイアウトページ(_SingleContent_Layout.cshtml)のコード:_Layout.cshtml
@using common = www.AppCode.Common;
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>@common.GetTitle(ViewBag.IndependentTitle,ViewBag.Title)</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
<!-- head 。 ContentPlaceHolder -->
@RenderSection("header", required: false)
</head>
<body>
<div>
<div id="ly_Top" class="ly_960">
<div id="ly_User">
<!-- 。 -->
@{Html.RenderAction("LoginInfo", "Partial");}
</div>
<div id="ly_Web">
</div>
</div>
<div id="ly_NaviContainer">
<div id="ly_Navi">
<div class="ly_960">
<div id="ly_Logo" onclick="location.href='/'"></div>
<div>
<!-- 。 -->
@{Html.RenderAction("Navi"
, "Partial"
, new { parentController = ViewContext.RouteData.Values["controller"].ToString() });}
</div>
</div>
</div>
</div>
<div id="ly_Main">
<!-- -->
@RenderBody()
</div>
</div>
@Scripts.Render("~/bundles/jquery182")
<!-- 。 ContentPlaceHolder -->
@RenderSection("scripts", required: false)
</body>
</html>
サブマスターページ_SingleContent_Layout.cshtml@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@section header{
@Styles.Render("~/Content/SingleContent")
@* , ? *@
@RenderSection("header", required: false)
}
@section Scripts {
@RenderSection("scripts", required: false)
}
<div class="content_box container">
<div class="content_box_in">
@RenderBody()
</div>
</div>
コンテンツページindex.cshtml@{
ViewBag.Title = "Service";
Layout = "~/Views/Shared/_SingleContent_Layout.cshtml";
}
<div class="service">
<h2> </h2>
</div>
参考記事:http://www.cnblogs.com/haiyabtx/archive/2012/06/12/2545821.html