根据条件渲染局部视图

时间:2009-12-07 10:01:30

标签: asp.net-mvc

我有一些部分视图,当用户具有某个角色时应该呈现。

现在,我想避免做类似

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

我希望能够做到(在ascx的顶部):

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

现在,在BasePartialView中,我有一个在调用RenderOnlyForRoles时填充的角色列表。

问题是RenderOnlyForRoles被调用..我能想到的所有事件:)我无法停止控件的渲染。

关于如何获得我想要的任何想法?

编辑:任何人都知道其他视图引擎是否支持此功能?

2 个答案:

答案 0 :(得分:4)

使用HTMLHelper

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

善,

答案 1 :(得分:0)

我倾向于通过使用多态来解决这种类型的挑战。在这种情况下,您可以拥有要渲染的基本视图。

当用户处于所需角色时,您将呈现具体的视图;否则,你可以渲染一个基本上什么都不做的 Null View

在ASP.NET MVC 2之前,您需要手动映射多态视图,但我recently wrote a blog post that describes how you can do that