@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
中声明
你试过吗
RenderSection("AdditionalMeta", false);
而不是
@if (IsSectionDefined("AdditionalMeta")) {
RenderSection("AdditionalMeta");
}
有关文档,请参阅此处