繁体   English   中英

通过功能/方法启用/禁用按钮

[英]Enabling/disabling buttons via function/method

  1. 我有 8 个按钮,每个按钮执行不同的任务,即编辑、删除、创建等,以及每个任务的上下文菜单

  2. 我在 DB 中有一个名为Moderations的表,它由 bool 组成,即 groupTitle、canEdit、canDelete、canCreate..... groupTitle 是字符串而不是 bool

  3. 我有一个 bool 函数canDoIt(task, userid)来检查登录的用户(将具有特定的 groupTitle)是否可以执行(函数返回 true 或 false 对于提供的任务,简而言之)

假设,我想检查一个登录的用户是否可以执行任务,通过 canDoit(task, userid) 检查,如果他不能,按钮将被禁用,否则不会...... OnForm_Load 我抛出函数(或者可能是我需要它的另一个时间)并检查每个按钮,即

btnEdit.Enabled = canDo("canEdit", userID)
btnDelete.Enabled = canDo("canDelete", userID)
btnCreate.Enabled = canDo("canCreat", userID)

cnxMenuEdit.Enabled = canDo("canEdit", userID)
cnxMenuDelete.Enabled = canDo("canDelete", userID)
.
.
.
.....and so on and so forth.

我的方法工作得很好,但我有疑问和问题。

第一个问题,这样好吗?

第二个问题,专业吗?

另一个是,这会影响程序或数据库的性能吗?

您需要将登录用户的访问权限保留在内存中。 创建一些包含访问权限列表的用户模型,在用户登录时将其加载到某个静态对象,然后您可以在需要时检查访问权限。

类似的东西

public class UserModel 
{
    public List<UserAccessRight> AccessRights {get; set;}
}

public class UserAccessRight
{
    public string Name {get; set;}
}

public static class SomeAuthHelperClass
{
    public UserModel CurrentUser {get; set;}

    // some helper methods to retrieve data etc.

   public static CanDo(string accessRight)
   {
       return CurrentUser.AccessRights.Contains(ar => ar.Name.Equals(accessRight);
   }
}
.....

btnEdit.Enabled = SomeAuthHelperClass.CanDo("EditSomething");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM