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

本文关键字:MVC NET 不在 Razor @section | 更新日期: 2023-09-27 18:31:39

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

我的_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);
}

这不会输出任何内容,尽管_Layout.cshtml返回false IsSectionDefined("AdditionalMeta") - 我尝试将"ExtraalMeta"@section移动到Index.cshtml - 这使得IsSectionDefined("AdditionalMeta") _Layout.cshtml返回true但给出以下错误:

以下部分已定义,但尚未为布局页面"~/Views/Shared/_Layout.cshtml"呈现:"AdditionalMeta"。

我错过了什么还是以错误的方式接近了这一点?谢谢!

编辑:Faby的解决方案是正确的,前提是"ExtraalMeta"@section是在Index.cshtml而不是_Title.cshtml中声明

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

你试过吗

RenderSection("AdditionalMeta", false); 

而不是

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

有关文档,请参阅此处