我有一个布局页面,目前,有一个页面使用该布局。我想有一个页面的一部分,可以显示或隐藏在子页面的酌处权。如果它是隐藏的,那么其他样式的变化,比如主内容div的宽度,需要进行调整。下面是我的非工作尝试:
布局页面
@{
Layout = "~/Views/Shared/_Layout.cshtml";
ViewBag.ShowTree = true;
}
<div class="row">
@if(ViewBag.ShowTree){
<div class="col-md-2">
@Html.Action("ItemTree")
</div>
}
<div class="@(ViewBag.ShowTree ? "col-md-10" : "col-md-12")">
@RenderBody()
</div>
</div>子页
@{
ViewBag.Title = "Edit";
Layout = "~/Views/Shared/_NestedLayout.cshtml";
ViewBag.ShowTree = false;
}在此实例中,ShowTree的值设置为true,布局页呈现,然后子节点将其设置为false,内容呈现。基于MVC的页面生命周期,这是非常有意义的。但我当然不想让它起作用。
我知道我可以在控制器中设置这个值,而不是在布局/网页中设置它,但是如果可以的话,我希望这完全是一个设计的东西,并将它排除在控制器之外。
我倾向于它根本不调用操作,而不只是用JavaScript隐藏数据。
发布于 2013-12-10 19:04:10
我喜欢您的方法,但如果不起作用,我能想到的唯一其他机制就是使用@section来控制子视图。不太理想,但应该有效。
布局页面:
<div class="row">
@RenderSection("ItemTreeSection", required: false)
<div class="@(ViewBag.ShowTree ? "col-md-10" : "col-md-12")">
@RenderBody()
</div>
</div>儿童观点:
@section ItemTreeSection {
<div class="col-md-2">
@Html.Action("ItemTree")
</div>
}https://stackoverflow.com/questions/20502810
复制相似问题