@Razor-MVC#.NET 4.5中未渲染的部分

@Razor-MVC#.NET 4.5中未渲染的部分,c#,asp.net,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Razor,我试图在视图中输出一些额外的元数据,这些视图是通过共享的部分视图使用Html.RenderPartial()呈现的 我的\u Layout.cshtml如下所示: <head> //... @if (IsSectionDefined("AdditionalMeta")) { RenderSection("AdditionalMeta"); } //... </head> @model TitleViewModel @

我试图在视图中输出一些额外的
元数据,这些视图是通过共享的
部分视图
使用
Html.RenderPartial()
呈现的

我的
\u Layout.cshtml
如下所示:

<head>
    //...
    @if (IsSectionDefined("AdditionalMeta")) { 
        RenderSection("AdditionalMeta"); 
    }
    //...
</head>
@model TitleViewModel

@section AdditionalMeta {
    @if (Model != null && Model.Title != null)
    {     
        //additional <meta> tags using Model properties here  
    }
}

//...other irrelevant code
…和
Index.cshtml
视图实现
\u Title.cshtml

@model TitleViewModel

@{
    Html.RenderPartial("_Title", Model);
}
虽然在
\u Layout.cshtml
中作为
IsSectionDefined(“AdditionalMeta”)
返回
false
,但这不会输出任何结果-我尝试将“AdditionalMeta”
@节移动到
Index.cshtml
,这使得
IsSectionDefined(“AdditionalMeta”)
\u Layout.cshtml中的
返回
true
,但给出以下错误:

已为布局页面“~/Views/Shared/_layout.cshtml”定义了以下部分,但尚未呈现这些部分:“AdditionalMeta”

我是不是错过了什么,还是走错了路?谢谢

编辑:Faby的解决方案是正确的,前提是“AdditionalMeta”节在
Index.cshtml
中声明,而不是
\u Title.cshtml

您刚才用

RenderSection("AdditionalMeta", false); 
而不是

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

参考文档

是的,我最初有
@RenderSection(“AdditionalMeta”,required:false)
如果在
Index.cshtml
中声明“AdditionalMeta”
@部分
,而不是
\u Title.cshtml