私のASP.NET MVC 3アプリケーションには、次の構造があります。私の.cshtmlページでコンテンツを定義する必要があるのはなぜですか?
- アイテム
- Index.cshtml
- カテゴリー
- 共有
- _Index.cshtml
- _Site.cshtml
- Index.cshtml
どちらIndex.cshtml
ファイルは、レイアウトのページとして_Index.cshtml
を使用して_Index
は_Site
レイアウト内にネストされます。
Items/Index
は、_Index
で定義されたオプションセクションを実装します。 Shared/Index
は空です。
Items/Index
ビューは正常に動作します。カテゴリはインデックスを持たないため、共有フォルダ内のものを使用します。これは動作しません。
それは "RenderBody" メソッドは "〜/ビュー/共有/ _Index.cshtml" レイアウト・ページのために呼び出されていない
エラーをスローします。
_Site
た場合の通話RenderBody
、および_Site
から_Index
継承、_Index
内のコンテンツが必要なRenderBody
コールを満たしていないとShared/Index.cshtml
は空白にすることができますか?
マスターページを使用してこの構造を実装したASP.NET MVC 1アプリケーションがあり、うまくいきましたが、Razorを使用してMVC 3に変換すると、この問題が発生しています。ここで
は、私が説明してるものの基本的なアウトラインです:
_Site.cshtml
<!DOCTYPE html>
// head
<body>
@RenderBody()
</body>
_Index.cshtml
@{
Layout = "~/Views/Shared/_Site.cshtml";
}
<div id="sub-menu">
// Markup
</div>
// More markup
@RenderSection("SectionOne", required: false)
@RenderSection("SectionTwo", required: false)
アイテム/ Index.cshtml(ワーキング)
@{
Layout = "~/Views/Shared/_Index.cshtml";
}
@section SectionOne {
// Markup
}
共有/Index.cshtml(RenderBodyエラー)
@{
Layout = "~/Views/Shared/_Index.cshtml";
}
// Rest of this file is empty
私の_Index.cshtmlは@RenderBodyを呼び出しません。 _Indexは_Siteのセクションを実装するだけで、いくつかの新しいセクションを定義します。次に、Item/Indexは_Indexセクションのいくつかを実装します。それでおしまい。 – Brandon
@Brandon - あなたが何を記述しているのか分からないので、基本的なcshtmlのコードをいくつか含めておけば助けになるかもしれません。 –
更新された質問。たぶん、私は正しくネストされたページを実装していませんが、基本的にそれの構造です。 – Brandon