我有以下布局模板:
<div id="columns" class="@View.LayoutClass">
<div id="mainColWrap">
<div id="mainCol">
@RenderBody()
</div>
</div>
@if (View.ShowLeftCol){
<div id="leftCol">
@RenderSection("LeftCol", required: false)
</div>
}
@if (View.ShowRightCol){
<div id="rightCol">
@RenderSection("RightCol", required: false)
</div>
}
</div>
Run Code Online (Sandbox Code Playgroud)
如果View.ShowLeftCol或View.ShowRightCol设置为false,则会出现以下错误:
已定义以下部分,但尚未针对布局页面"〜/ Views/Shared/_Layout.cshtml":"RightCol"进行渲染.
我正在尝试使用单个布局模板,而不是尝试在运行时动态选择模板.有没有办法忽略这个错误并继续渲染?任何人都可以想到另一种实现方式,这将允许我用Razor动态显示/隐藏列?
谢谢!
在我的网站上,我有一个部分(浮动侧边栏),我只想为一组用户(管理员)呈现.我希望我可以将逻辑放在主布局中,以确定是否应显示该部分,但如果未呈现该部分,则会在页面上导致错误.
示例代码 - Layout.cshtml ...
... code ...
@if(user.IsAdmin) {
@RenderSection("AdminSidebar", false)
}
Run Code Online (Sandbox Code Playgroud)
示例代码 - MyPage.cshtml ...
@section AdminSidebar {
... code ...
}
Run Code Online (Sandbox Code Playgroud)
有没有人知道如何让它工作而不必将逻辑放在所有子页面中?
作为注释,IsSectionDefined("AdminSidebar")仅适用于布局文件.它在页面中不起作用来测试该部分是否可用.