4

@sectionと@RenderSection()を複数レベルのレイアウトで機能させる方法が見つかりません。私のプロジェクトでは、レイアウトの階層を定義します。

〜/ Views / Shared / _Layout.cshtml:

<!DOCTYPE html>
<html>
<head>
    <meta ... />
    <meta ... />

    <link href="..." rel="stylesheet" type="text/css" />
    <link href="..." rel="stylesheet" type="text/css" />

    @RenderSection("Stylesheet", false)
</head>
<body>
    <!-- lots of markup -->
    @RenderBody()

    <!-- more markup -->

    <script src="..." type="text/javascript" />
    <script src="..." type="text/javascript" />

    @RenderSection("JavaScript", false)
</body>
</html>

〜/ Views / Shared / _BaseLayout.cshtml(JavaScriptまたはスタイルシートセクションの定義はありません):

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<!-- lots of markup -->
@RenderBody()

〜/ Views / Shared / _CreateEditLayout.cshtml(ここでも、JavaScriptまたはスタイルシートの定義はありません):

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<!-- lots of markup -->
@RenderBody()

〜Views / Profile / Edit.cshtml:

@model ...

@{
    Layout = "~/Views/Shared/_CreateEditLayout.cshtml";
}

@section JavaScript {
    <script type="text/javascript">
        jQuery(document).ready(function ($) {
            // lots of funny JS
        });
    </script>
}

私の問題は、レンダリングされたストップを定義するだけで十分であるということです@section JavaScript { }(セクション内にマークアップやJavaScriptを記述する必要はありません) 。Edit.cshtmlエラーは次のとおりです。次のセクションが定義されていますが、レイアウトページ "〜/ Views / Shared / _CreateEditLayout.cshtml":"JavaScript"に対してレンダリングされていません。

何が悪いのか考えてみませんか?前もって感謝します。

4

1 に答える 1

2

それは不可能であり、回避策のみです。これがあなたの質問への答えです:カスケードセクションを備えたかみそりの入れ子になったレイアウト

于 2012-09-27T19:21:31.153 に答える