我有一些部分视图,当用户具有某个角色时应该呈现。
现在,我想避免做类似
的事情<% if(user is in role){..here goes the html.. }%>
我希望能够做到(在ascx的顶部):
<% this.RenderOnlyForRoles(list of roles) %>
现在,在BasePartialView中,我有一个在调用RenderOnlyForRoles时填充的角色列表。
问题是RenderOnlyForRoles被调用..我能想到的所有事件:)我无法停止控件的渲染。
关于如何获得我想要的任何想法?
编辑:任何人都知道其他视图引擎是否支持此功能?
答案 0 :(得分:4)
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。