ASP.NET MVC 3,部分和多个布局级别

时间:2012-09-27 18:27:46

标签: asp.net-mvc-3 layout

我找不到让@section和@RenderSection()使用多级布局的方法。在我的项目中,我定义了布局的层次结构:

〜/查看/共享/ _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 / _CateEditLayout.cshtml”:“JavaScript”呈现。

任何想法出了什么问题?提前谢谢。

1 个答案:

答案 0 :(得分:2)

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