Условные макеты в ASP.NET MVC 3 - PullRequest
3 голосов
/ 24 сентября 2011

Так что с макетами в 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 всегда будет пустым разделом,это просто условие, чтобы решить, делать ли частичное.Есть ли лучший способ?

1 Ответ

6 голосов
/ 24 сентября 2011

Почему бы не использовать ViewBag?На вашей странице:

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

Затем в _Layout.cshtml:

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

Однако это даже лучше установить в действии контроллера, а не в представлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...