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()

〜视图/配置文件/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

这是不可能的,只有解决方法。这是您问题的答案:Razor Nested Layouts with Cascading Sections

于 2012-09-27T19:21:31.153 回答