2011-03-11 27 views
1

我想根據用戶角色實現對usercontrols的訪問控制,我想在控件基類上這樣做,即僅在每個用戶控件上我需要設置一個字符串允許的角色,看用戶控制如何在用戶角色上設置用戶控件的可見性

這是一個用戶控件類可能看起來怎麼樣:

public partial class SimpleMenu : MyUsrControlBase 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      AlloweRoles = "RoleA, RoleB" 
      //specific user control functionality 
     } 
    } 

的基類:

public abstract class MyUsrControlBase : UserControl 
    { 
     private string _allowedRoles; 

     protected internal string AllowedRoles 
     { 
      set 
      { 
       _allowedRoles = value; 
       ValidateRoles(); 
      } 
     } 

     private ValidateRoles() 
     { 
      //Role validation logic 

      if (RoleHasAccess) 
       { 
       // Set user control visibility to true   
       } 
      else 
       { 
       // Set user control visibility to false   
       } 
     } 
    } 

如何SE根據驗證結果從基類中提取用戶控制可見性?

另外用戶控件中的哪個事件最適合設置角色?

AlloweRoles = "RoleA, RoleB" 

回答

1

您可以從基類設置的繼承Visible屬性:

private void ValidateRoles() 
{ 
    // Role validation logic. 

    Visible = RoleHasAccess; 
} 

編輯:關於你的第二個問題,您可以初始化在派生類中的AllowedRoles屬性的構造函數,所以它將被設置爲用戶控制的整個使用壽命:

public partial class SimpleMenu : MyUserControlBase 
{ 
    public SimpleMenu() 
    { 
     AllowedRoles = "RoleA, RoleB"; 
    } 
} 
+0

謝謝Frederic,我只需要把AllowedRoles =「..」在控件的OnLoad事件中,因爲需要會話變量來獲取角色 – 2011-03-16 23:45:22

相關問題