已定义以下部分但尚未为布局页面“〜/ Views / Shared / _Layout.cshtml”呈现:“精选”

时间:2016-01-19 23:36:41

标签: asp.net asp.net-mvc razor asp.net-web-api

我知道有很多关于这个错误的问题,总有答案

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>@ViewBag.Title</title>
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")"></script>
    <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")"></script>
</head>
<body>
    <ul id="menu">
        <li>@Html.ActionLink("Główna", "Index", "Home")</li>
        <li>@Html.ActionLink("Uzytkownicy", "Index", "Database")</li>
        <li>@Html.ActionLink("O systemie", "About", "Home")</li>
    </ul>
    <section id="main">
        @RenderBody()
        <p>Copyright 2015. All Rights Reserved.</p>
    </section>
</body>
</html>

但我的_Layout.cshtml文件中没有该部分。 我的档案:

{{1}}

我试图:

  1. 输入'“scripts”,必需:@RenderBody()上的false',
  2. 从头部删除脚本
  3. 在脚本部分的脚本部分放置@RenderSection(“scripts”,required:false)。
  4. 这些都没有帮助我。

1 个答案:

答案 0 :(得分:5)

Section就像您在布局中定义的占位符,并从特定视图中注入一些真实内容。当页面运行时,您从页面部分传递的内容将被注入到布局中调用RenderSection()的位置。

您的视图看起来正在通过featured部分传递内容,但您的布局没有“精选”部分的定义。所以你需要将它添加到布局文件

<body>
    <section id="main">

        @RenderBody()

        @RenderSection("featured", required: false)

    </section>
</body>

或者从特定视图中删除featured section代码。

您可能需要在布局中保留@RenderSection("scripts",required:false),这有助于您在特定视图中添加特定于页面的JavaScript。