Razor MVC中不需要的RenderSection

时间:2019-07-12 08:54:30

标签: c# razor

我有一个嵌套的LayoutFiles层次结构,并且需要在最顶层的布局中忽略打印视图不需要的代码“部分”。

打印视图旨在作为普通视图的简化版本,删除侧边栏,删除javascript,删除所有css等,等等。

@if (Model.IsPrint)
{
     @* specifically NO 'headerscripts' section *@
}
else
{
     @RenderSection("HeaderScripts", false)
}

但是这样做会在尝试打印时给我这种错误:

The following sections have been defined but have not been rendered for the layout page "~/Views/Shared/Layout/_MasterLayout.cshtml": "HeaderScripts; FooterScripts".

我知道我可能会使用...

 IsSectionDefined("HeaderScripts") 
例如,

..,但是那将需要更改称为该布局的其他布局,而我宁愿将所有逻辑都保留在该布局中。

此外,我也不想在评论中渲染这些部分,我知道也可以,但是太乱了。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我认为您必须在布局中将该部分定义为可选部分,例如:

@RenderSection("HeaderScripts", required: false)