【问题标题】:How to dynamically manage the asp.net control editable state based on roles如何根据角色动态管理asp.net控件的可编辑状态
【发布时间】:2016-10-19 18:12:19
【问题描述】:

我正在使用带有 .net 框架版本 4.0 的 asp.net。

我有一个页面,其中包含多个输入/选择控件,例如文本框、下拉列表复选框等。该页面可以由不同类型的用户访问,并且根据用户类型,每个页面控件都可以配置为编辑访问(启用/disabled),所以为了达到这个要求,我们在数据库表上存储了每个控件 ID、用户类型和可访问权限(启用/禁用)。在 page_load 上,我们从配置表中获取数据,然后找到页面上的每个控件并设置 enabled 属性。

到目前为止,这种方法有效,但我想用一些其他可能的或任何 asp.net 的内置功能来处理它。

【问题讨论】:

    标签: c# asp.net .net vb.net


    【解决方案1】:

    存储控件 ID 与 UI 紧密耦合。我个人喜欢将特征存储在数据库中,而不是控制 ID。

    主要原因是添加新功能时,您只需要根据该功能修改UI(添加或删除控件)。如果您以后必须迁移到不同的 UI,例如 ASP.Net MVC 或 UWA,您可以轻松地转换它们。

    例如,我将以下内容存储在数据库中。

    UserId | Insert | Update | Delete
    ---------------------------------
       1   |  True  | True   | False
       2   |  False | False  | False
    

    在网页表单中,您可以使用面板控件根据功能显示或隐藏多个控件。

    【讨论】:

    • 谢谢,我关心的不是插入更新或删除操作,这已经在顶级 sequirity 上实现,我们有第二级 sequirity,用户可以根据授予特定用户的特定权限在控制中输入数据或用户类型。例如,我们在页面中有 40 个输入控件,其中某些用户/用户组只能在 25 个控件中输入数据,并且该控件存在于不同的面板上。
    • 插入、更新删除只是假设的例子。底线是不存储控件 ID,这不是一个好的设计;相反,您希望存储功能例如 AllowPurchase。然后根据特征隐藏Panel当您以后迁移到 MVC 时,您可以轻松地将 Panel 替换为 PartialView
    猜你喜欢
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    相关资源
    最近更新 更多