ASP.NET MVC 3中的条件布局

Luk*_*ina 3 asp.net-mvc templates

因此,使用MVC3中的布局可以说我希望能够在页面级别指定是否显示特定部分,最好的方法是什么.请考虑以下页面:

@{
     ViewBag.Title = "...";
     Layout = "~/Views/Shared/Layout/_Layout.cshtml";
}

@section LetsBeFriends {

}

@section Header {
    ....
}

@section Body {
    ....
}
Run Code Online (Sandbox Code Playgroud)

为了使LetsBeFriends部分成为条件,我已经实现了这样的布局:

@{
        if (IsSectionDefined("LetsBeFriends"))
        {
            @RenderSection("LetsBeFriends")
            @Html.Partial("_LetsBeFriends")
        }
}

@RenderSection("Body")
Run Code Online (Sandbox Code Playgroud)

这看似hacky,因为LetsBeFriends将永远是一个空的部分,它只是决定是否渲染部分的条件.有没有更好的办法?

cou*_*ben 6

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

@if (friendsCondition)
{
    ViewBag.LetsBeFriends = true;
}
Run Code Online (Sandbox Code Playgroud)

然后,在_Layout.cshtml中:

@if (Viewbag.LetsBeFriends)
{
    @Html.Partial("_LetsBeFriends")
}
Run Code Online (Sandbox Code Playgroud)

但是,最好在控制器操作中设置它,而不是视图.