Визуализировать частичное представление на основе условия - PullRequest
3 голосов
/ 07 декабря 2009

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

Теперь я хочу избежать чего-то вроде

<% if(user is in role){..here goes the html.. }%>

Я хотел бы иметь возможность сделать (вверху ascx):

<% this.RenderOnlyForRoles(list of roles) %>

Теперь в BasePartialView у меня есть список ролей, который заполняется при вызове RenderOnlyForRoles.

Проблема в том, что RenderOnlyForRoles вызывается после ... всех событий, о которых я могу думать :), и я не могу остановить рендеринг элемента управления.

Есть идеи, как получить то, что я хочу?

РЕДАКТИРОВАТЬ: Кто-нибудь знает, могут ли другие viewengines поддерживать это?

Ответы [ 2 ]

4 голосов
/ 07 декабря 2009

Использовать HTMLHelper

public static void RenderOnlyForRoles(this HtmlHelper html, List<string> roles))
{
    if (check if user in roles)
    {
        html.RenderPartial(yourview);
    }
}

Доброжелательность,

Dan

0 голосов
/ 07 декабря 2009

Я был бы склонен решать этот тип задачи, используя полиморфизм. В этом случае у вас может быть базовый вид, который вы хотите визуализировать.

Когда пользователь находится в нужной роли, вы визуализируете конкретный вид; в противном случае вы можете визуализировать Null View , который в принципе ничего не делает.

До ASP.NET MVC 2 вам нужно было вручную сопоставлять полиморфные представления, но я недавно написал сообщение в блоге, в котором описывается, как это сделать .

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