c# - 更好的方式来构建我在 View 字段上执行用户权限的方式

标签 c# .net asp.net-mvc permissions html-helper

因此,目前在我们的代码中,我们有一堆类围绕访问登录到 Web 应用程序的特定用户的角色和权限。这建得很好,而且运作良好。但是,现在出现的一个特定要求不仅是能够限制某些页面(整个 View )的某些权限,而且还包括那些 View 上的特定字段。因此,您可能能够查看某个 View ,但您可能只有允许您查看该页面上某些字段的权限。

我们在 ASP.NET/C# 中使用 HTML Helpers 生成我们的大部分字段。例如,这里是我们需要根据权限阻止/显示的一个:

<%= Html.CheckBoxFor(m => m.Current, new { @class = "economicTextBox", propertyName = "Current", onchange = "UseCurrent();UpdateField(this);" })%>

我的第一个想法是在此之前在类似的嵌入式 C# 代码中进行权限检查,并将 HTML Helper 放在“if”语句中,这样它只会在用户获得权限时呈现。当我看到前端因所有这些语句而变得非常臃肿时,我再次猜测自己,并认为可能有更好的方法来做到这一点。

有大佬推荐一下吗?谢谢。

最佳答案

将用户权限作为模型的单独模块。创建包含要显示/隐藏的代码块的部分 View 。将模块传递给分部 View ,并让 View 保存显示内容的逻辑。

这应该意味着您可以在您的部分 View 中创建一个逻辑 block ,决定是一些基本的 ifs 或开关,以及用于显示它的标记更加清晰和易于管理。

例如,假设您创建了一个所有页面模型都继承的权限模型,从而确保您可以将相同的权限传递给所有页面。然后你可以像这样调用一个 View 并将模型传递给它:

<%Html.RenderPartial("Widgets/NavigationUserControl"); %>

这将保留用户导航的标记和逻辑。在此部分 View 中,您将让它继承您的权限对象:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<WebApp.Web.Models.Permissions>" %>

然后您可以在标记中执行更基本的逻辑,或者让 html 助手执行繁重的工作并返回一些枚举/属性以供更基本的代码进行决策。例如;

<%
if (Model.User.IsAdmin)
{
%>
...html...
<%
}
else
{
%>
...html...
<%
}
%>

关于c# - 更好的方式来构建我在 View 字段上执行用户权限的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4673449/

相关文章:

c# - 我想使用 Kinect 将 RGB 和深度数据保存为帧

javascript - ButtonField确认点击不起作用

c# - 有没有办法方便地将字典转换为字符串?

c# - 如何以编程方式删除 Azure Active Directory 用户?

asp.net-mvc - 在 MVC4 中使用 MVC 区域来创建以下解决方案结构的正确用法是什么?

c# - 将 StreamReader 转换回 pdf

c# - 如何使用 C# 在 .NET 中获取当前用户名?

.net - MonoTouch 应用程序无法构建/部署到 iphone 设备,但它在 iSimulator 上运行良好

asp.net-mvc - Razor 页面的 OnPost

c# - 传递空的 SQL 参数给出错误