如何根据用户角色设置用户控件可见性

时间:2011-03-11 19:09:08

标签: c# asp.net validation user-controls

我想根据用户角色实现对用户控件的访问控制,我想在控件基类上执行它,这样在每个用户控件上我只需要设置一个允许角色的字符串来查看用户控件

这是用户控件类的外观:

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        
               }
        }
    }

如何根据验证结果从基类设置用户控件可见性?

用户控件中的哪个事件最好设置角色?

AlloweRoles = "RoleA, RoleB"

1 个答案:

答案 0 :(得分:1)

您可以从基类设置继承的Visible属性:

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

    Visible = RoleHasAccess;
}

编辑:关于第二个问题,您可以在派生类的构造函数中初始化AllowedRoles属性,因此它将在用户控件的整个生命周期内设置:

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