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

Rad*_*dek 4 asp.net asp.net-mvc razor asp.net-web-api

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

@RenderSection("scripts", required: false)
Run Code Online (Sandbox Code Playgroud)

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

<!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>
Run Code Online (Sandbox Code Playgroud)

我试过了:

  1. 在@RenderBody()上输入'"scripts",必需:false',
  2. 从头部删除脚本
  3. 在脚本部分的脚本部分放置@RenderSection("scripts",required:false).

这些都没有帮助我.

Shy*_*yju 5

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

看起来您的视图通过该featured部分传递了一些内容,但您的布局没有"特色"部分的定义.所以你需要将它添加到布局文件中

<body>
    <section id="main">

        @RenderBody()

        @RenderSection("featured", required: false)

    </section>
</body>
Run Code Online (Sandbox Code Playgroud)

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

您可能需要保留@RenderSection("scripts",required:false)在布局中,这将有助于您从特定视图中包含特定于页面的javascript.