@section不在Razor中呈现 - MVC C#.NET 4.5

时间:2014-11-24 14:15:49

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

我正在尝试在通过共享<head>使用Html.RenderPartial()呈现的视图中输出一些额外的Partial View元数据。

我的_Layout.cshtml看起来像这样:

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

...我的共享视图(_Title.cshtml)如下所示:

@model TitleViewModel

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

//...other irrelevant code

...并Index.cshtml查看实施_Title.cshtml

@model TitleViewModel

@{
    Html.RenderPartial("_Title", Model);
}

虽然IsSectionDefined("AdditionalMeta")中的_Layout.cshtml返回false,但我没有输出任何内容 - 我尝试将“AdditionalMeta”@section移至Index.cshtml代替 - 这样做IsSectionDefined("AdditionalMeta")中的_Layout.cshtml返回true,但会出现以下错误:

  

以下部分已定义,但尚未针对布局页面“〜/ Views / Shared / _Layout.cshtml”进行渲染:“AdditionalMeta”。

我错过了什么或接近错误的方式吗?谢谢!

编辑:Faby的解决方案是正确的,只要在@section而不是Index.cshtml

中声明“AdditionalMeta”_Title.cshtml

1 个答案:

答案 0 :(得分:1)

你是否尝试过

RenderSection("AdditionalMeta", false); 

而不是

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

请参阅here了解文档