因此,使用MVC3中的布局可以说我希望能够在页面级别指定是否显示特定部分,最好的方法是什么。请考虑以下页面:
@{
ViewBag.Title = "...";
Layout = "~/Views/Shared/Layout/_Layout.cshtml";
}
@section LetsBeFriends {
}
@section Header {
....
}
@section Body {
....
}
为了使LetsBeFriends部分成为条件,我实现了这样的布局:
@{
if (IsSectionDefined("LetsBeFriends"))
{
@RenderSection("LetsBeFriends")
@Html.Partial("_LetsBeFriends")
}
}
@RenderSection("Body")
这看起来很hacky,因为LetsBeFriends将永远是一个空的部分,它只是决定是否渲染部分的条件。还有更好的方法吗?
答案 0 :(得分:6)
为什么不使用ViewBag?在您的页面中:
@if (friendsCondition)
{
ViewBag.LetsBeFriends = true;
}
然后,在_Layout.cshtml中:
@if (Viewbag.LetsBeFriends)
{
@Html.Partial("_LetsBeFriends")
}
但是,最好在控制器操作中设置它,而不是视图。