首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于用户权限隐藏部分视图的ASP.NET MVC2技术

基于用户权限隐藏部分视图的ASP.NET MVC2技术
EN

Stack Overflow用户
提问于 2010-08-30 19:05:32
回答 2查看 592关注 0票数 2

根据用户的凭据,隐藏部分视图的最佳技术是什么?

为了更好地解释我自己,作为示例,我在视图中有以下代码:

代码语言:javascript
复制
<%= this.Model.Name %> <%=Html.ActionLink("Edit",....)%>

例如,我想为那些不是管理员的人隐藏编辑按钮。

能帮我一把吗?

在此之前非常感谢。

诚挚的问候。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-30 19:18:59

有更多的方法可以做到这一点,但你必须考虑在做的时候遵循DRY。同时也要考虑到你的观点不应该太复杂。

不太明显的方式

编写Html扩展方法(对于您需要的那些元素),这些方法也接受一组权限作为参数,并基于这些权限呈现它们的内容。像这样:

代码语言:javascript
复制
<%= Html.ActionLink(new PermissionRight[] { PermissionRight.Edit, PermissionRight.Create }, "Edit", ...) %>

这样,您将能够提供可以公开此类功能的所有权限,并且它将对所有视图/部分通用...如果将PermissionRight枚举定义为标志,则可以在不使用数组的情况下提供它们。

通常的(显而易见的)方式

您可以编写自己的基视图或基控制器类,并直接在其中公开您的用户(或至少需要的数据)。和正确的类型,所以不需要强制转换。

然后只需使用那些(这个有基本视图类):

代码语言:javascript
复制
<% if (this.User.HasWritePermission) %>
<% { %>
    <%= Html.ActionLink("Edit", ...) %>
<% } %>

您可以看到,这个解决方案比第一个解决方案需要更多的代码来完成相同的任务,因此会用更多的代码污染您的视图。

票数 2
EN

Stack Overflow用户

发布于 2010-08-30 19:08:05

在您的控制器中,当您对用户进行身份验证时,您可以将额外的成员传递给视图,如模型对象中的isAdmin。

如果用户是管理员,则将isAdmin设置为true。

如果isAdmin为true,则在视图中呈现“编辑”按钮。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3599768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档