以下部分已被定义,但尚未呈现布局页面“〜/ 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 {}检查拼写和大写/小写的术语“”正确在这种情况下是“脚本”
- 你如何在本地主机上使用https / SSL?
- NuGet:'X'已经有一个依赖项定义为'Y'
- 错误 – 与当前连接关联的交易已经完成,但尚未处理
- SignalR 2.0错误:无法加载文件或程序集Microsoft.Owin.Security
- IE11预览中未定义“WebForm_DoPostBackWithOptions”
- DateTime.Parse(“2012-09-30T23:00:00.0000000Z”)总是转换为DateTimeKind.Local
- 浏览器或选项卡closures时closures/closures会话
- 在ASP.NET中使用SecureString有什么好处吗?
- 编辑在Visual Studio 2010中随机禁用的aspx / ascx文件?