以下部分已被定义,但尚未渲染布局页面
这是一个ASP.NET MVC 3exception消息。 它说什么? 我该怎么办?
好的,我有这个代码:
@{ Layout = "~/_Layout.cshtml"; Page.Title = "Home"; } @section meta{ <meta name="keywords" content="" /> <meta name="description" content="" /> } <h2>Html Content Here</h2> @section footer { <script src="http://code.jquery.com/jquery-latest.min.js" charset="utf-8"></script> <script type="text/javascript"> $(document).ready(function() { }); </script> }
您的布局页面实际上不是渲染部分footer
和meta
在你的_Layout.cshtml中,放置@RenderSection("meta")
你想要的元节渲染。
您还可以执行@RenderSection("meta", false)
来指示该部分是可选的。
错误消息意味着您的_Layout.cshtml
不包含您在视图中的@section
的@RenderSection
语句。
检查您的布局,让我们知道。
请参阅此页面了解更多信息。
我遇到了类似的问题,布局模板确实有@RenderSection(...)
但在if-else statement
。 所以当页面执行不包含@RenderSection
的语句时,它会抛出exception。 如果这是你的情况,那么你的解决scheme要复杂一点:
- 确保你有
@RenderSection
以外的语句或 - 在if-else语句中重复
@RenderSection
,或者 - 使用不同的部分视图,或
- 重新devise布局。
这可能是你的主要问题!
当我收到这个错误,我试图有条件地包括在我的布局的一部分时,它的视图定义。 这是布局:
@if (IsSectionDefined("header")) { RenderSection("header"); } else { Html.RenderPartial("_Header"); }
我想@Jaider也在他的回答中提到了这一点,但是你不能在一个if语句中放置一个RenderSection
。 实现我的目标的方法是在RenderSection
方法中反转if并将required
参数设置为false:
@RenderSection("header", false); @if (!IsSectionDefined("header")) { Html.RenderPartial("_Header"); }
如果没有定义setion,第一行不会做任何事情,If语句可以确保在没有定义节的时候呈现默认头。
通常,如果您不为主布局页面所需的部分编写代码,则会发生此错误
参考: https : //ziaahmedshaikh.wordpress.com/2016/02/17/the-following-sections-have-been-defined-but-have-not-been-rendered-for-the-layout-page/