如何使用bootstrap和asp.net生成基于角色的菜单

本文关键字:于角色 角色 菜单 bootstrap 何使用 asp net | 更新日期: 2023-09-27 18:15:28

我试图隐藏和显示基于角色的菜单,而在asp.net中使用bootstrap。

我正在使用这个模板左边的导航菜单。http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/pages/index.html

这是我设计的一个例子。

        <!-- /.navbar-top-links -->
        <div class="navbar-default sidebar" role="navigation" >
            <div class="sidebar-nav navbar-collapse">
                <ul class="nav" id="side-menu">
                    <li>
                        <a href="../Home.aspx"><i class="fa fa-pencil-square-o fa-fw"></i> <font color = "000000"><b>Home</b></font></a>
                    </li>
                    <li>
                        <a href="CreateCCF.aspx"><i class="fa fa-pencil-square-o fa-fw"></i> <font color = "000000"><b>Request New </b></font></a>
                    </li>
                    <li>
                        <a href="#"><i class="fa fa-folder-open-o fa-fw"></i> <font color = "000000"> <b>My Requested </b></font><span class="fa arrow"></span></a> 
                        <ul class="nav nav-second-level">                                 
                     <li>
                        <a href="ReqDraft.aspx">Draft</a>
                    </li>
                    <li>
                        <a href="ReqOpen.aspx">Open</a>
                    </li>
                    <li>
                        <a href="ReqClose.aspx">Close</a>
                    </li>
                    <li>
                        <a href="ReqViewAll.aspx">View All</a>
                    </li>
                </ul>
                     <li>
                        <a href="#"><i class="fa fa-pencil-square-o fa-fw"></i> <font color = "000000"><b>For My Approval</b></font><span class="fa arrow"></span></a>
                    <ul class="nav nav-second-level">                                 
                    <li>
                        <a href="PendingApproval.aspx">Pending for Approval</a>
                    </li>
                    <li>
                        <a href="Approved.aspx">Approved</a>
                    </li> 
                    <li>
                        <a href="Rejected.aspx">Rejected</a>
                    </li> 
                </ul>
                    </li>
                </li>
                    <li>
                        <a href="#"><i class="fa fa-folder-open-o fa-fw"></i> <font color = "000000"> <b>For Assignee</b></font><span class="fa arrow"></span></a> 
                        <ul class="nav nav-second-level">                                 
                    <li>
                        <a href="AsgOpen.aspx">Open</a>
                    </li>
                    <li>
                        <a href="AsgClose.aspx">Close</a>
                    </li> 
                    <li>
                        <a href="AsgViewAll.aspx">View All</a>
                    </li> 
                </ul>
                </li>
                 <li>
                        <a href="#"><i class="fa fa-folder-open-o fa-fw"></i> <font color = "000000"> <b>Administration</b></font><span class="fa arrow"></span></a> 
                        <ul class="nav nav-second-level"> 
                    <li>
                        <a href="AllPending.aspx">All Pending Approval</a>
                    </li>
                    <li>
                        <a href="AllClosed.aspx">All Closed </a>
                    </li>
                        </ul>
                </li>
            </div>
            <!-- /.sidebar-collapse -->
        </div>
        <!-- /.navbar-static-side -->
    </nav>

例如,我希望普通用户只能访问"请求新的"answers"我的请求"。对于审批人,他们只能访问"for My Approval"。

我已经尝试过使用这种方法,然而,它不是为引导。

public void generateMenu()
    {
        DataTable dt = new DataTable();
        ArrayList parInput = new ArrayList();
        string strMenu = "";
        strMenu = "<table border='1' cellpadding='4' cellspacing='4' width='100%'>";
        parInput.Add("@RoleID");
        parInput.Add(Convert.ToInt32(Session["RoleID"].ToString()));
        parInput.Add("@AppID");
        parInput.Add("2");
        dt = db.ExecSQLQuery(strSQLConn, "master_spGetMenuLink", parInput);
        foreach (DataRow dr in dt.Rows)
        {
            if (dr[1].ToString() == "NA")
            {
                strMenu += " <tr class='MenuLinkHeader'><td>" + dr[0].ToString() + "</td></tr>";
            }
            else
            {
                if (dr[0].ToString() != "Create New")
                { 
                    if (dr[0].ToString() == "Create CCF" && ((Session["SubGroup"].ToString() == "AB") || (Session["SubGroup"].ToString() == "AC")))
                    {
                        strMenu += " <tr class='MenuLink'><td><a href='" + dr[1].ToString() + "'>" + dr[0].ToString() + "</td></tr>";
                    }
                    else
                    {
                        strMenu += " <tr class='MenuLink'><td><a href='" + dr[1].ToString() + "'>" + dr[0].ToString() + "</td></tr>";
                    }
                }
            }
        }
        strMenu += "</table>";
        Response.Write(strMenu);
    }

如何使用bootstrap和asp.net生成基于角色的菜单

我建议在用户登录后,检查用户的角色。然后,把它放在一个会话中。["角色"])(会话。

对于Page_Load上的每个页面,如果角色对特定页面具有访问权限,则设置一些条件。如果没有,重定向到Home/Default。

因为隐藏导航不是很准确,因为它可以通过在地址页上输入url来访问,即使它隐藏在导航菜单上