簡體   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