1. ホーム
  2. asp.net

[解決済み] レイアウトページ"~/Views/Shared/_Layout.cshtml "では、以下のセクションは定義されていますが、レンダリングは行われていません。"スクリプト"

2022-02-02 02:14:13

質問

ASP MVCの初心者ですが、ASP MVC 4 Betaチュートリアルの入門編を活用しています。 http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4

また、私はプログラミングの経験があまりないため、このエラーを修正してチュートリアルを進めるには何から始めればよいのかわかりません。どんなことでもご相談ください。

コントローラからモデルのデータにアクセスする」のセクションで、チュートリアルの一部としてムービーを作成しようとすると、このエラーが表示されます。

次のセクションは定義されていますが、レイアウトページのレンダリングは行われていません >"~/Views/Shared/_Layout.cshtml": "Scripts"

Visual Studio expressではなく、Visual Studio 2012 RCをダウンロードしました(それが私の問題の根本原因であるかどうかはわかりません。

この質問に答えるためにコードを含める必要があることは承知していますが、どのようなコードを含めればよいのかさえわかりません。もしあれば、どのようなコードを含める必要があるのかご指示ください。

ありがとうございました。

解決方法は?

マスターの Layout.cshtml でセクションを定義しているのに、View でそのセクションに対応するものが含まれていないことを意味します。

もし、あなたの_Layout.cshtmlがこのような内容であった場合。

@RenderSection("scripts")

そして、そのレイアウトを使用するすべてのViewは には @section という名前のセクションがあります (セクションの中身が空でも)。

@{
    ViewBag.Title = "Title";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@section scripts{
    // Add something here
}

別の方法として を false に設定すると、すべての View でセクションを追加する必要がなくなります。

@RenderSection("scripts", required: false)

をラップすることもできます。 @RenderSection の中に if ブロックを作成します。

@if (IsSectionDefined("scripts"))
{
    RenderSection("scripts");
}