根据用户的凭据,隐藏部分视图的最佳技术是什么?
为了更好地解释我自己,作为示例,我在视图中有以下代码:
<%= this.Model.Name %> <%=Html.ActionLink("Edit",....)%>例如,我想为那些不是管理员的人隐藏编辑按钮。
能帮我一把吗?
在此之前非常感谢。
诚挚的问候。
发布于 2010-08-30 19:18:59
有更多的方法可以做到这一点,但你必须考虑在做的时候遵循DRY。同时也要考虑到你的观点不应该太复杂。
不太明显的方式
编写Html扩展方法(对于您需要的那些元素),这些方法也接受一组权限作为参数,并基于这些权限呈现它们的内容。像这样:
<%= Html.ActionLink(new PermissionRight[] { PermissionRight.Edit, PermissionRight.Create }, "Edit", ...) %>这样,您将能够提供可以公开此类功能的所有权限,并且它将对所有视图/部分通用...如果将PermissionRight枚举定义为标志,则可以在不使用数组的情况下提供它们。
通常的(显而易见的)方式
您可以编写自己的基视图或基控制器类,并直接在其中公开您的用户(或至少需要的数据)。和正确的类型,所以不需要强制转换。
然后只需使用那些(这个有基本视图类):
<% if (this.User.HasWritePermission) %>
<% { %>
<%= Html.ActionLink("Edit", ...) %>
<% } %>您可以看到,这个解决方案比第一个解决方案需要更多的代码来完成相同的任务,因此会用更多的代码污染您的视图。
发布于 2010-08-30 19:08:05
在您的控制器中,当您对用户进行身份验证时,您可以将额外的成员传递给视图,如模型对象中的isAdmin。
如果用户是管理员,则将isAdmin设置为true。
如果isAdmin为true,则在视图中呈现“编辑”按钮。
https://stackoverflow.com/questions/3599768
复制相似问题