这是一个ASP.NET MVC 3异常消息。它说的是什么?我该怎么办?
好的,我有这段代码:
@{
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>
}
答案 0 :(得分:75)
您的布局页面实际上并未呈现footer
和meta
在_Layout.cshtml中,将@RenderSection("meta")
放入您希望呈现元素部分的位置。
您也可以@RenderSection("meta", false)
表示该部分是可选的。
答案 1 :(得分:13)
答案 2 :(得分:10)
我遇到了类似的问题,其中布局模板确实具有@RenderSection(...)
但在if-else statement
内。因此,当页面执行不包含@RenderSection
的语句时,它将抛出该异常。如果是这种情况,那么您的解决方案会更复杂一点:
@RenderSection
,或这可能是你的主要问题!
答案 3 :(得分:0)
当我收到此错误时,我试图在视图定义时有条件地在我的布局中包含一个部分。这是布局:
@if (IsSectionDefined("header"))
{
RenderSection("header");
}
else
{
Html.RenderPartial("_Header");
}
我认为@Jaider也在他的回答中提到了这一点,但你不能在if语句中放置RenderSection
。实现我的目标的方法是反转if并在required
方法上将RenderSection
参数设置为false:
@RenderSection("header", false);
@if (!IsSectionDefined("header"))
{
Html.RenderPartial("_Header");
}
如果没有定义setion,第一行不会做任何事情,If语句确保在没有定义任何部分时呈现默认标题。
答案 4 :(得分:-2)