基于角色的管理员菜单处理(XML)
根据角色不同分配不同管理权限,具体代码如下:
XML文件:
XML文件:
<?xml version="1.0" encoding="utf-8" ?>
<Items>
<Item ID="0" ItemName="添加管理员" RoleID="1" ItemUrl="/fradmin/addAdmin.aspx"></Item>
<Item ID="1" ItemName="管理员列表" RoleID="1" ItemUrl="/fradmin/adminList.aspx"></Item>
<Item ID="3" ItemName="修改密码" RoleID="2" ItemUrl="/fradmin/changepwd.aspx"></Item>
<Item ID="4" ItemName="用户列表" RoleID="2" ItemUrl="/fradmin/UserList.aspx"></Item>
<Item ID="5" ItemName="销售状况" RoleID="2" ItemUrl="/fradmin/sailstatus.aspx"></Item>
<Item ID="6" ItemName="商品信息" RoleID="2" ItemUrl="/fradmin/GoodsList.aspx"></Item>
<Item ID="7" ItemName="添加商品" RoleID="2" ItemUrl="/fradmin/addgood.aspx"></Item>
<Item ID="8" ItemName="添加商品类别" RoleID="2" ItemUrl="/fradmin/addcategory.aspx"></Item>
<Item ID="9" ItemName="退出系统" RoleID="2" ItemUrl=""></Item>
</Items>
操作代码adminMenu.ascx.cs核心代码:<Items>
<Item ID="0" ItemName="添加管理员" RoleID="1" ItemUrl="/fradmin/addAdmin.aspx"></Item>
<Item ID="1" ItemName="管理员列表" RoleID="1" ItemUrl="/fradmin/adminList.aspx"></Item>
<Item ID="3" ItemName="修改密码" RoleID="2" ItemUrl="/fradmin/changepwd.aspx"></Item>
<Item ID="4" ItemName="用户列表" RoleID="2" ItemUrl="/fradmin/UserList.aspx"></Item>
<Item ID="5" ItemName="销售状况" RoleID="2" ItemUrl="/fradmin/sailstatus.aspx"></Item>
<Item ID="6" ItemName="商品信息" RoleID="2" ItemUrl="/fradmin/GoodsList.aspx"></Item>
<Item ID="7" ItemName="添加商品" RoleID="2" ItemUrl="/fradmin/addgood.aspx"></Item>
<Item ID="8" ItemName="添加商品类别" RoleID="2" ItemUrl="/fradmin/addcategory.aspx"></Item>
<Item ID="9" ItemName="退出系统" RoleID="2" ItemUrl=""></Item>
</Items>
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
string selectid=Request.Params["selectid"];
if(selectid!=null)
dlstMenu.SelectedIndex=Int32.Parse(selectid);
BindToMenu(Session["RoleID"].ToString());
}
Web 窗体设计器生成的代码
//根据管理员角色不同分别绑定不同数据节点用于管理操作
private void BindToMenu(string roleid)
{
System.Xml.XmlDocument doc=new System.Xml.XmlDocument();
doc.Load(Server.MapPath("/fradmin/adminMenu.xml"));
XmlNode itemNode=doc.DocumentElement;
//新建DataTable对象,用于绑定至DataList控件
DataTable dt=new DataTable();
dt.Columns.Add("ItemName");
dt.Columns.Add("ItemUrl");
//定义各数据项字符串引用,
string itemName,itemUrl,adminroleID;
string[] rowItem=new string[2];
//遍历整个xml文档,同时验证管理员角色编号,将各节点项目数据添加至DataTable中
foreach(XmlNode xnode in itemNode)
{
adminroleID=xnode.Attributes["RoleID"].Value;
if(roleid=="2")
{
if(adminroleID==roleid)
{
itemName=xnode.Attributes["ItemName"].Value;
itemUrl=xnode.Attributes["ItemUrl"].Value;
rowItem[0]=itemName;
rowItem[1]=itemUrl;
dt.Rows.Add(rowItem);
}
}
else
{
//roleID=1,超级管理员,将所有节点数据全部取出添加至DataTable
itemName=xnode.Attributes["ItemName"].Value;
itemUrl=xnode.Attributes["ItemUrl"].Value;
rowItem[0]=itemName;
rowItem[1]=itemUrl;
dt.Rows.Add(rowItem);
}
}
//将所取出数据绑定至DataList
dlstMenu.DataSource=dt;
dlstMenu.DataBind();
}
}
{
// 在此处放置用户代码以初始化页面
string selectid=Request.Params["selectid"];
if(selectid!=null)
dlstMenu.SelectedIndex=Int32.Parse(selectid);
BindToMenu(Session["RoleID"].ToString());
}
Web 窗体设计器生成的代码
//根据管理员角色不同分别绑定不同数据节点用于管理操作
private void BindToMenu(string roleid)
{
System.Xml.XmlDocument doc=new System.Xml.XmlDocument();
doc.Load(Server.MapPath("/fradmin/adminMenu.xml"));
XmlNode itemNode=doc.DocumentElement;
//新建DataTable对象,用于绑定至DataList控件
DataTable dt=new DataTable();
dt.Columns.Add("ItemName");
dt.Columns.Add("ItemUrl");
//定义各数据项字符串引用,
string itemName,itemUrl,adminroleID;
string[] rowItem=new string[2];
//遍历整个xml文档,同时验证管理员角色编号,将各节点项目数据添加至DataTable中
foreach(XmlNode xnode in itemNode)
{
adminroleID=xnode.Attributes["RoleID"].Value;
if(roleid=="2")
{
if(adminroleID==roleid)
{
itemName=xnode.Attributes["ItemName"].Value;
itemUrl=xnode.Attributes["ItemUrl"].Value;
rowItem[0]=itemName;
rowItem[1]=itemUrl;
dt.Rows.Add(rowItem);
}
}
else
{
//roleID=1,超级管理员,将所有节点数据全部取出添加至DataTable
itemName=xnode.Attributes["ItemName"].Value;
itemUrl=xnode.Attributes["ItemUrl"].Value;
rowItem[0]=itemName;
rowItem[1]=itemUrl;
dt.Rows.Add(rowItem);
}
}
//将所取出数据绑定至DataList
dlstMenu.DataSource=dt;
dlstMenu.DataBind();
}
}