因此,对于 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")

这看起来很棘手,因为 LetsBeFriends 将始终是一个空部分,它只是决定是否呈现部分的条件。有没有更好的办法?

最佳答案

为什么不使用 ViewBag?在您的页面中:

@if (friendsCondition)
{
    ViewBag.LetsBeFriends = true;
}

然后,在 _Layout.cshtml 中:
@if (Viewbag.LetsBeFriends)
{
    @Html.Partial("_LetsBeFriends")
}

但是,最好在 Controller 操作而不是 View 中设置它。

关于asp.net-mvc - ASP.NET MVC 3 中的条件布局,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7537026/

10-11 02:08