我在_Layout.cshtml中有以下代码:
@if (SiteConfig.Instance.HasCustomMarkup)
{
@RenderSection("bodyPart1", false)
@RenderBody()
@RenderSection("bodyPart2", false)
}
else
{
<div id="mainContainer">
@RenderBody()
</div>
}
所以我尝试仅在某些条件下渲染部分。但它没有用,我有一个例外:
The following sections have been defined but have not been rendered for the layout page ...
为此目的,mvc中是否有任何解决方法? 谢谢!
答案 0 :(得分:22)
只需检查部分是否存在,即:
@if (IsSectionDefined("bodyPart1"))
{
@RenderSection("bodyPart1")
}
答案 1 :(得分:0)
要防止发生The following sections have been defined but have not been rendered...
异常,您可以模拟渲染调用而无需实际渲染。
@if (SOME_CONDITION)
{
@RenderSection("SectionName", false)
}
else
{
var fakeSectionRender = RenderSection("SectionName", false);
if (fakeSectionRender != null) {
fakeSectionRender.WriteTo(TextWriter.Null);
}
}
要考虑的缺点是性能,因为这种方法即使在不需要时也会强制渲染。