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

正如你所看到的,我只是在测试,我没有把该页的名称年。如果你给我一条路,我会很高兴的。谢谢。

c# asp . net如何根据用户权限使用后台代码设置元素的启用和可见属性

我通常做的是在页面的开头声明一个变量。假设:

@var canUserSee = UserMembershipElementsData.HasAdminRole(); //then razor @if(canUserSee) <button id="ButtonAdmin">Just Admins can see this button</button>

注意:这是基于角色的权限,你必须实现函数HasAdminRole()。你也可以为特定的控件实现函数,例如bool HasUserRightToControl (ElementData控件)

相关文章: