我正在尝试在通过共享<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
_Title.cshtml
答案 0 :(得分:1)
你是否尝试过
RenderSection("AdditionalMeta", false);
而不是
@if (IsSectionDefined("AdditionalMeta")) {
RenderSection("AdditionalMeta");
}
请参阅here了解文档