私の問題は、@RenderSection
がベーステンプレートで定義されている場合、ネストされたテンプレートから@RenderSection
を使用できないようです。現在、子テンプレートにリンクされたネストされたベーステンプレートがあり、ビューテンプレートで使用されています。ベーステンプレートで@RenderSection
を定義してビューページにレンダリングすると、エラーが発生します。
ここに正確な問題があります。
RenderSectionを作成して、カスタムスクリプトを挿入できるようにしたいと考えています。私の基本テンプレート...
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
@RenderSection("HeaderContent", false) // The region of the header scripts (custom css)
</head>
<body>
@RenderBody()
</body>
</html>
そこにカスタムヘッドコードを配置してページ自体に適用したくないので、子テンプレートをスキップします。
@section HeaderContent {
<script>alert("hi");</script>
}
私の問題は、通常のページからベーステンプレートにカスタムヘッドコードを追加できないようです。
次のセクションは定義されていますが、レイアウトページ~/Views/Shared/OneColLayer.cshtml": "HeaderContent
用にレンダリングされていません。
ビューページにベーステンプレートへのポインタを含める必要がありますか?
@{
Layout = "~/Views/Shared/BaseTemplate.cshtml";
}
新しいベーステンプレート
<head>
<link rel="stylesheet" type="text/css" href="@Url.Content("~/content/layout.css")" />
<link rel="stylesheet" type="text/css" href="@Url.Content("~/content/global.css")" />
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/js/fadeInFadeOut.js")"></script>
<title>@ViewBag.Title</title>
@RenderSection("HeaderContent", false)
</head>
<body>
@RenderBody()
</body>
私の新しい子テンプレート
@{
Layout = "~/Views/Shared/BaseTemplate.cshtml";
}
@RenderSection("HeaderContent", false)
@RenderBody()
私の見解
@{
ViewBag.Title = "Home";
Layout = "~/Views/Shared/OneColLayer.cshtml";
}
@section HeaderContent {
<h1>Left Content</h1>
}
<div>my view content</div>
コンテンツはoneColテンプレートに配置され、ベーステンプレートになりました。
結果...
<div id="Content">
<h1>Left Content</h1>
</div>
中央のテンプレートで通過を許可されるセクションを指定する必要があります。
BaseTemplate.cshtml
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
@RenderSection("HeaderContent", false) @* The region of the header scripts (custom css) *@
</head>
<body>
@RenderBody()
</body>
</html>
[〜#〜]編集[〜#〜]
新しい子テンプレート
@{
Layout = "~/Views/Shared/BaseTemplate.cshtml";
}
@section HeaderContent {
@RenderSection("HeaderContent", false)
}
@RenderBody()
レンダリングセクションをベーステンプレートのセクション内に配置すると、そのセクションはベーステンプレートの正しい場所にレンダリングされます。
View.cshtml->レイアウトとしてMiddleLayout.cshtmlを使用します
@section HeaderContent
{
<!-- header content that will now render -->
}
<!-- page content -->