c# asp . net如何根据用户权限使用后台代码设置元素的启用和可见属性
本文关键字:元素 设置 代码 启用 属性 后台 net asp 何根 权限 用户 | 更新日期: 2023-09-27 18:05:40
我正在使用c# ASP . NET制作一个网页。我需要根据用户权限设置HTML页面中元素的属性Enabled和Visible。它包括导航栏(菜单),按钮,图表,一切…
我将从数据库中获取信息。我相信我将需要这些信息在数据库:
1-屏幕(字符串)
2-元素名称(字符串)
3-可见(bool)
4 -启用
我可以有一个独特的功能来改变所有这些属性在OnLoadPage/OnInit?是否存在类似"getElementByName()"的东西,它带来了任何类型的元素,可以轻松地改变其属性(可见/启用)?
我发现了一些问题,因为我也使用DevExpress,我不能只使用FindControl()来查找dx:aspnetGridView中的所有元素,例如。
例子:
public class ElementData
{
public string Path { get; set; }
public bool Visible { get; set; }
public bool Enabled { get; set; }
public void Adiciona(string Path, bool Visible, bool Enabled)
{
this.Path = Path;
this.Visible = Visible;
this.Enabled = Enabled;
}
}
public class UserMembershipElementsData
{
//User
public string UserName { get; set; }
//Membership
public string Password { get; set; }
public string Nome { get; set; }
public string Email { get; set; }
public List<ElementData> ElementsList { get; set; }
public UserMembershipElementsData(string Nome, string UserName, string Password, string Email)
{
this.UserName = UserName;
this.Password = Password;
this.Nome = Nome;
this.Email = Email;
this.ElementsList = new List<ElementData>();
}
}
public UserMembershipElementsData usr = new UserMembershipElementsData("Joao","admin","pass","jairo@tnah.com.br"); //declared as public
ElementData elm = new ElementData(); //just part of the code
elm.Adiciona("btnAdiciona", true, false); //Add, Visible, Disabled
usr.ElementsList.Add(elm);
protected void grdDados_CustomButtonInitialize(object sender, ASPxGridViewCustomButtonEventArgs e)
{
if (e.VisibleIndex == -1) return;
foreach (ElementData elm in usr.ElementsList)
{
if (e.ButtonID == elm.Path)
{
e.Visible = DefaultBoolean.True; ///Permission I couldnt use elm.Visible
e.Enabled = elm.Enabled; //Permission
break;
}
}
}
正如你所看到的,我只是在测试,我没有把该页的名称年。如果你给我一条路,我会很高兴的。谢谢。
我通常做的是在页面的开头声明一个变量。假设:
@var canUserSee = UserMembershipElementsData.HasAdminRole();
//then razor
@if(canUserSee)
<button id="ButtonAdmin">Just Admins can see this button</button>
注意:这是基于角色的权限,你必须实现函数HasAdminRole()。你也可以为特定的控件实现函数,例如bool HasUserRightToControl (ElementData控件)