【问题标题】:Generating menu based on user role Asp.net c#基于用户角色Asp.net c#生成菜单
【发布时间】:2018-11-10 20:03:58
【问题描述】:

我有 2 个不同的角色(管理员和普通用户);基于仅输入他们将有权访问的菜单的用户。但是,我不确定如何从中获取菜单。他们的角色存储在数据库表中。这是我目前在设计窗口中的内容。

<asp:Menu ID="Menu1" runat="server" DynamicHoverStyle-BackColor="#99ccff" Orientation="Horizontal" Font-Size="X-Large" ForeColor="#003366" DynamicEnableDefaultPopOutImage="False" ScrollDownImageUrl="~/Img/1.jpg" StaticEnableDefaultPopOutImage="False" >
    <DynamicHoverStyle BackColor="#99CCFF" />
    <Items>
        <asp:MenuItem NavigateUrl="~/Home/Welcome.aspx" Text="Home" Value="Home" ToolTip="Home" ></asp:MenuItem>
        <asp:MenuItem  Text="Search User"  ToolTip="Search"></asp:MenuItem>

        <asp:MenuItem Text="Add User" Value="Add User">

        <asp:MenuItem  NavigateUrl="~/Account/login.aspx" Text="Log Out"  ToolTip="Log Out"></asp:MenuItem> 
    </Items>
</asp:Menu>

更新

if (dr.Read())
{
    if (Convert.ToString(dr["RoleName"]) == "Administrator")
    {
        Menu1.Items.Add(new MenuItem
        {
            NavigateUrl = "~/Home/Welcome.aspx",
            Text = "Home",
        });
    }
}

【问题讨论】:

标签: c# asp.net


【解决方案1】:
  1. 为您的菜单项添加 ID,为其赋予不同的名称。在管理项上设置visible='false'
  2. 在您的代码隐藏文件中检查用户是否是管理员。如果是这样,请在管理项上设置 visible=true

根据您的要求,您可以禁用它们(在这种情况下,它们会出现在菜单中,但除非用户是管理员,否则它们将不起作用)。

菜单项: &lt;asp:MenuItem ID="menu1" visible="false" Text="Add User" Value="Add User"&gt;

代码隐藏将是:

if (user.isAdmin) { menu1.Visible = true }

【讨论】:

    【解决方案2】:

    您可以使用会话。检查他是否是管理员然后显示他的菜单,如果他是普通用户然后显示他的菜单。

    if(Session["type"]=="admin")
    {
    //
    }
    else if(Session["type"]=="regularUser")
    {
    //
    }
    

    【讨论】:

    • 必须从数据库中提取类型
    • 是的,如果是这样,您需要这样做
    • 那么在会话结束后菜单如何发挥作用
    • 按照你的预期,你只需要了解if else结构。您需要展示什么完全取决于您。
    • 确实了解该结构,但涉及到导航部分。
    猜你喜欢
    • 2019-07-25
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 2022-06-14
    相关资源
    最近更新 更多