以下部分已被定义,但尚未呈现布局页面“〜/ Views / Shared / _Layout.cshtml”:“脚本”

我是新来的ASP MVC和利用介绍ASP MVC 4 Beta教程http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet -mvc -4-

我遇到了一个错误,我似乎无法find答案,也没有太多的编程经验,所以我不知道从哪里开始解决这个问题。 我感谢您可以提供的任何帮助。

我正在从控制器部分访问您的模型的数据,当我尝试创build一个电影作为教程的一部分,我收到这个错误,我点击链接“创build新的”,我得到以下错误

以下部分已被定义,但尚未呈现布局页面“〜/ Views / Shared / _Layout.cshtml”:“脚本”

我没有使用Visual Studio Express,而是select下载Visual Studio 2012 RC(不确定这是否是我的问题的根本原因。

我意识到你可能会要求我包含代码来回答这个问题,但我不确定什么代码甚至包括。 请告诉我你需要什么代码,如果有的话,我会很乐意把它添加到我的问题。

谢谢,

这意味着你已经在你的主Layout.cshtml中定义了一个部分,但是你没有在你的View中包含任何部分。

如果你的_Layout.cshtml有这样的东西:

@RenderSection("scripts") 

然后,所有使用该布局的视图必须包含具有相同名称的@section (即使该部分的内容为空):

 @{ ViewBag.Title = "Title"; Layout = "~/Views/Shared/_Layout.cshtml"; } @section scripts{ // Add something here } 

作为替代scheme,您可以将所需设置为false,那么您将不需要在每个视图中添加该部分,

 @RenderSection("scripts", required: false) 

或者你也可以将@RenderSection包装在if块中,

 @if (IsSectionDefined("scripts")) { RenderSection("scripts"); } 

此外,您可以_Layout.cshtml添加到_Layout.cshtml_Layout.Mobile.cshtml

 @RenderSection("scripts", required: false) 

我有一个3级的案例a'la _ MainLayout.cshtml <— _ Middle.cshtml <— Page.cshtml 。 即使这样做:

_MainLayout.cshtml

 <head> @RenderSection("head", false) </head> 

_Middle.cshtml

 @section head { @RenderSection("head") } 

并在Page.cshtml中定义

 @section head { ***content*** } 

我仍然会得到错误

以下部分已被定义,但尚未呈现在布局页面“〜/ Views / Shared / _Middle.cshtml”:“head”。

原来,错误是Middle.cshtml依赖/Views/_ViewStart.cshtml来解决它的父布局。 通过在Middle.cshtml中明确定义这个问题已经解决了这个问题:

 @{ Layout = "~/Views/_Shared/_MainLayout.cshtml"; } 

不能决定这是否是devise或MVC 4中的错误 – 无论如何,问题已经解决:)

我不确定为什么接受的答案被接受,如果build议的解决scheme没有,也不能解决问题。 实际上可能有两个相关的问题涉及到这个话题。

问题#1

母版页(如_Layout.cshtml )有一个定义的部分,它是必需的,但inheritance的意见并没有实现它。 例如,

布局模板

 <body> @* Visible only to admin users *@ <div id="option_box"> @* this section is required due to the absence of the second parameter *@ @RenderSection("OptionBox") </div> </body> 

inheritance视图

不需要显示任何代码,只要考虑视图上没有 @section OptionBox {}实现。

问题#1的错误

Section not defined: "OptionBox ".

问题#2

母版页(如_Layout.cshtml )有一个定义的部分,它是必需的,而inheritance视图没有实现它。 但是,实现视图具有在其母版页上定义的其他script部分。

布局模板

same as above

inheritance视图

 <div> <p>Looks like the Lakers can still make it to the playoffs</p> </div> @section OptionBox { <a href"">Go and reserve playoff tickets now</a> } @section StatsBox { <ul> <li>1. San Antonio</li> <li>8. LA Lakers</li> </ul> } 

问题#2的错误

The following sections have been defined but have not been rendered for the layout page "~/Views/Shared/_Layout.cshtml": "StatsBox"

OP的问题类似于问题2,接受的答案是问题1。

我认为我们的解决scheme与其他人完全不同,所以我会在这里logging下来。

我们已经设置了主布局,中间布局,然后是最终的动作页面渲染。 Main.cshtml < – Config.cshtml < – Action.cshtml

只有当web.config有customErrors='On/RemoteOnly'我们得到一个自定义的错误,没有例外,也没有调用Application_Error 。 我可以在Error.cshtml中的Layout = null行上看到。 例外是在问题,缺less脚本部分。

我们确实在Main.cshtml中定义了它(必需:false),Action.cshtml没有任何写入脚本部分的内容。

解决scheme是将@section scripts { @RenderSection("scripts", false) }到Config.cshtml。

它基本上发生在_Layout.cshtml没有的时候:

 @RenderSection("scripts", required: false) 

或与

 @RenderSection("scripts") 

WITHOUT

 required: false 

因此,只需在_Layout.cshtml中添加@RenderSection(“scripts”,required:false),它专门为那些使用Kendoui genarated项目的开发者工作。

当您使用Visual Studio创build新模型时,Visual Studio的某些版本自动生成的View文件之间似乎存在不匹配。 我遇到了这个问题,使用新的VS 2013社区版,并通过在http://www.w3schools.com/aspnet/mvc_app.asp的W3Schools教程,但上面的意见表明,它不是一个问题的指导方向或与单个版本的VS.

确实,您可以通过删除错误消息来使错误消息消失

@Scripts.Render("~/bundles/jqueryval")

从Visual Studio自动生成的创build/编辑布局开始。

但是这个解决scheme并没有解决问题的根本原因,也没有把你放在一个很好的地方,而不是完成整个教程。 在开发一个真正的应用程序的某个时候(可能相当早),您将要访问注释解决scheme从您的应用程序中删除的jQueryvalidation代码。

如果您使用VS为您创build新模型,则还会创build一组五个视图文件:创build,删除,详细信息,编辑和索引。 其中两个视图“创build”和“编辑”旨在让用户添加/编辑数据库logging中位于模型下的字段的数据。 对于真实应用程序中的这些视图,在将logging保存在数据库中之前,您可能需要使用jqueryvalidation库进行一些数据validation。 这就是为什么VS添加以下几行

 @section Scripts { @Scripts.Render("~/bundles/jqueryval") } 

到这两个观点的底部,而不是其他的观点。 自动生成的代码试图使validation库可用于这些意见,而不是其他人。

发生错误是因为VS不会将相应的行添加到共享的_Layout.cshtml文件中,或者,请参阅上面的一个答案,添加它,但不会将其注释掉。 这条线是

@RenderSection("scripts", required: false)

如果某些视图具有脚本部分(如“创build”和“编辑”),则必须在该布局中embedded一个RenderSection命令。 如果某些脚本具有该部分而另一些脚本不具有(如Delete,Details和Index则不),则RenderSection命令必须具有required: false参数。

所以最好的解决scheme是,如果你想做更多的事情,除了完成本教程之外,还需要在_Layout.cshtml中添加语句,而不是从编辑和创build视图中删除代码。

PS这里有点混淆,在这里,需要什么是一个“包”,require语句看起来像是试图将一个文件包含在项目中不存在的bundle文件夹中。 但是,对于debugging版本和教程,这并不相关,因为捆绑文件一次只包含一个。 请参阅: http : //www.asp.net/mvc/overview/performance/bundling-and-minification这里讨论的代码是在页面的三分之二处简短提及的。

在使用Visual Studio 2012进行ASP.NET MVC 4教程时,我遇到了“从控制器部分访问模型数据”中的相同错误。 修复很简单。

当在共享文件夹的_Layout.cshtml文档中的Visual Studio 2012中创build新的ASP.NET MVC 4 Web应用程序时,“脚本”部分被注释掉。

  @*@RenderSection("scripts", required: false)*@ 

简单地取消注释行和示例代码应该工作。

  @RenderSection("scripts", required: false) 

在为MVC初学者实施教程时,我遇到同样的问题。 我有各种build议来修改layout.cshtml文件中的@RenderSection,但我没有使用它。

我search了很多,然后我发现(View / Edit.cshtml)和其他cshtml文件中生成的脚本标记不是呈现

 **@section Scripts { @Scripts.Render("~/bundles/jqueryval") 

} **

所以我删除了这些行和应用程序开始顺利运行。

我在网上search错误,来到这个页面。 我正在使用Visual Studio 2015,这是我的第一个MVC项目。

如果在渲染部分之前错过了@符号,将会得到相同的错误。 我想分享这为未来的初学者。

  @RenderSection("headscripts", required: false) 

我有一种感觉,就是在_Layout文件中使用@section来引用部分视图中的@section,也就是说,在@section中嵌套了@section。 在_Layout文件中,删除渲染周围的@section。

请确保您在视图中input了正确的使用脚本部分的拼写

正确的是

 @section scripts{ //your script here} 

如果你input@section script{ //your script here}这是错误的。

检查拼写和大写/小写的术语“”

当我们写@RenderSection(“name”,required:false)确保剃刀视图包含一个部分@section name {}检查拼写和大写/小写的术语“”正确在这种情况下是“脚本”