嵌套/继承布局页不工作



我有以下布局页

_StyledLayout.cshtml:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />

    <title>@ViewBag.Title</title>
    <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
    @RenderSection("Head", false)
</head>
<body>
    @RenderBody()
</body>
</html>

_StyledPageLayout.cshtml:

@{
    Layout = "~/Views/Shared/_StyledLayout.cshtml";
}
@section Head
{
<script src="@Url.Content("~/Scripts/jquery-ui.min.js")" type="text/javascript"></script>
}
@RenderBody()

Details.cshtml:

@using System.Data;
@model ASPNETMVC3.Models.ConfigModel
@{
    ViewBag.Title = "Details";
    Layout = "~/Views/Shared/_StyledPageLayout.cshtml";
}
@section Head
{
<script type="text/javascript">
        var oTable;
        $(document).ready(function () {  
            $(".datepicker").datepicker({ dateFormat: 'dd/mm/yy' });
        });
    </script>
}
<h2>
    Details</h2>

在这个设置中,当我转到详细信息时,我得到错误:*以下部分已被定义,但尚未为布局页面"~/Views/Shared/_StyledPageLayout"渲染。cshtml":"头"。*

我做错了什么?

_StyledPageLayout.cshtml:

@section Head
{
    @if (IsSectionDefined("Head"))
    {
        // If the view contains a Head section use that instead
        @RenderSection("Head")
    }
    else
    {
        // The view doesn't have a Head section => use some default output
        <script src="@Url.Content("~/Scripts/jquery-ui.min.js")" type="text/javascript"></script>
    }
}

与接受的答案基本相同,但如果不需要默认呈现,则更简洁一些。

@section Head
{
   @RenderSection("Head", false)
}

最新更新