C# 如何根据用户角色设置用户控件可见性
我想根据用户角色为usercontrols实现访问控制,我想在控件基类上实现访问控制,这样在每个用户控件上,我只需要设置一个包含允许角色的字符串就可以看到用户控件 这是用户控件类的外观: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
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=“…”,因为获取角色需要会话变量