如何使用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);
}
我建议在用户登录后,检查用户的角色。然后,把它放在一个会话中。["角色"])(会话。
对于Page_Load上的每个页面,如果角色对特定页面具有访问权限,则设置一些条件。如果没有,重定向到Home/Default。
因为隐藏导航不是很准确,因为它可以通过在地址页上输入url来访问,即使它隐藏在导航菜单上