13

次のページがある場合:

<body>
    @section SomeStuff {
        <span>This is a section I just addered</span>
    }

</body>

レイアウトがこのセクションをレンダリングしない可能性はありますか、それともこれが概念的に機能する方法に反していますか? ページ上の特定のセクションをレンダリングできないようにすると便利なようです (これについて間違って考えていない限り)。

編集:

エラー メッセージを含めると役立つ場合があります。セクションをメインページに配置すると、レイアウトページが次のように失敗しますThe following sections have been defined but have not been rendered for the layout page "/Views/Layouts/_Layout1.cshtml": "SomeStuff".

つまり、Layout.cshtml では @RenderSection を呼び出しませんが、Index.html では defined というセクションがありSomeStuffます。それは合法ですか?ページ内のすべてのセクションをレンダリングするように強制されているようですが、セクションはオプションであるべきだと思われますよね?

4

5 に答える 5

27

セクションが必要かどうかを指定できます。

@RenderSection("SomeStuff", required: false)

ビューでレンダリングしない場合、エラーにはなりません。ここに記載されています

http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx

于 2013-05-17T14:32:59.933 に答える
4

特定のレイアウトが特定のセクションをレンダリングしないようにするには、layout.cshtml のようなものが必要です。

@RenderSection("Somestuff", required:false)
于 2013-05-17T14:33:34.097 に答える
0

あなたがすることができます:

  @if (condition) {
     @RenderSection("SomeStuff")
  }

または、次のconditional statement代わりに a を直接使用し@RenderSectionます。

 @if (yourCondition) {
    <span>This is a section I just addered</span>
 }
于 2013-05-17T14:23:45.520 に答える