[英]Enabling/disabling buttons via function/method
我有 8 個按鈕,每個按鈕執行不同的任務,即編輯、刪除、創建等,以及每個任務的上下文菜單
我在 DB 中有一個名為Moderations的表,它由 bool 組成,即 groupTitle、canEdit、canDelete、canCreate..... groupTitle 是字符串而不是 bool
我有一個 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.