【问题标题】:How to set user control visibility, upon user role如何根据用户角色设置用户控件可见性
【发布时间】:2011-07-13 17:32:53
【问题描述】:

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

这是用户控件类的外观:

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"

【问题讨论】:

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


    【解决方案1】:

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

    private void ValidateRoles()
    {
        // Role validation logic.
    
        Visible = RoleHasAccess;
    }
    

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

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

    【讨论】:

    • 谢谢 Frederic,我只需要将 AllowedRoles = ".." 放在控件的 OnLoad 事件中,因为获取角色需要 Session 变量
    猜你喜欢
    • 2015-04-13
    • 2020-05-18
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多