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

C# 如何根据用户角色设置用户控件可见性,c#,asp.net,validation,user-controls,C#,Asp.net,Validation,User Controls,我想根据用户角色为usercontrols实现访问控制,我想在控件基类上实现访问控制,这样在每个用户控件上,我只需要设置一个包含允许角色的字符串就可以看到用户控件 这是用户控件类的外观: public partial class SimpleMenu : MyUsrControlBase { protected void Page_Load(object sender, EventArgs e) { AlloweRoles = "Rol

我想根据用户角色为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        
               }
        }
    }
private void ValidateRoles()
{
    // Role validation logic.

    Visible = RoleHasAccess;
}
如何根据验证结果从基类设置用户控件可见性

另外,用户控件中的哪个事件最适合设置角色

AlloweRoles = "RoleA, RoleB"
可以从基类设置继承的属性:

 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        
               }
        }
    }
private void ValidateRoles()
{
    // Role validation logic.

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

public partial class SimpleMenu : MyUserControlBase
{
    public SimpleMenu()
    {
        AllowedRoles = "RoleA, RoleB";
    }
}
可以从基类设置继承的属性:

 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        
               }
        }
    }
private void ValidateRoles()
{
    // Role validation logic.

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

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

谢谢你,Frederic,我只需在控件的OnLoad事件中放入AllowedRoles=“…”,因为需要会话变量来获取角色谢谢你,Frederic,我只需在控件的OnLoad事件中放入AllowedRoles=“…”,因为获取角色需要会话变量