【问题标题】:ASP.NET MVC 3, sections and multiple layout levelsASP.NET MVC 3、部分和多个布局级别
【发布时间】:2012-09-19 14:54:18
【问题描述】:

我找不到使@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>
}

我的问题是,为我的Edit.cshtml 停止渲染定义@section JavaScript { }(不必在该部分内编写标记或JavaScript)就足够了。错误如下:以下部分已定义但尚未为布局页面“~/Views/Shared/_CreateEditLayout.cshtml”呈现:“JavaScript”。

有什么想法吗?提前致谢。

【问题讨论】:

    标签: asp.net-mvc-3 layout


    【解决方案1】:

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

    【讨论】:

    • 谢谢,这段文字真的很有用!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 2012-05-15
    相关资源
    最近更新 更多