与えられたビュー階層: Index.cshtml -> _Layout.cshtml -> _MasterLayout.cshtml :
_MasterLayout.cshtml - マスター レイアウトで使用するセクションのセット (以下)
@section javascriptLinks {
<script src="~/client/vendor/require-jquery.js" data-main="~/client/main.js" type="text/javascript"></script>
}
@RenderBody()
_Layout.cshtml - 実際のサイト マスター レイアウト
@{
Layout = "~/Views/Shared/_MasterLayout.cshtml";
}
<!doctype html>
<html>
<!-- actual site layout here -->
<body>
@RenderBody()
@RenderSection("javascriptLinks")
</body>
</html>
Index.cshtml - 具体的なページ固有のマークアップ
_Layout.cshtml と _MasterLayout.cshtml を分割するという考え方は、コード共有です。私は一種のライブラリ/フレームワークを持っており、_MasterLayout はこのライブラリに属しています。_Layout.cshtml は具体的なアプリケーション サイト マスター レイアウトです。
残念ながら、このスキーマは機能しません。レンダリング中、_Layout.cshtml は _MasterLayout.cshtml のセクションを認識しません。
そのような場合にセクションを使用する方法はありますか (子ビューからではなく、親ビューから取得します)?
考えられる解決策の 1 つは、_MasterLayout.cshtml でセクションごとに個別のページを作成し、_Layout で @RenderPage を呼び出すことです。しかし、単一の共有アセット (_MasterLayout.cshtml) が必要です。