• 页面根据XML里权限动态生成菜单


    1.XML文件,分为大标题与小标题,文档中层级很清楚,不需再多解释

    <?xml version="1.0" encoding="utf-8" ?>
    <doc>
    <NavMenu>
    <Menus text="商铺管理" imgUrl="../images/main_02.jpg" ID="1,2">
    <MenuItem ID="1" Text="商铺列表页面" href="/shop/getshoplist.html" target="main" onclick="replay(this)"></MenuItem >
    <MenuItem ID="2" Text="添加商铺页面" href="/shop/Addshop.html" target="main" onclick="replay(this)"></MenuItem >
    </Menus>

    <Menus text="品牌管理" imgUrl="../images/main_02.jpg" ID="3,4">
    <MenuItem ID="3" Text="品牌列表页面" href="/shop/GetbrandList.html" target="main" onclick="replay(this)"></MenuItem >
    <MenuItem ID="4" Text="添加品牌页面" href="/shop/Addbrand.html" target="main" onclick="replay(this)"></MenuItem >
    </Menus>

    <Menus text="套餐管理" imgUrl="../images/main_02.jpg" ID="5,6">
    <MenuItem ID="5" Text="套餐列表页面" href="/shop/GetpackageList.html" target="main" onclick="replay(this)"></MenuItem >
    <MenuItem ID="6" Text="添加套餐页面" href="/shop/Addpackage.html" target="main" onclick="replay(this)"></MenuItem >
    </Menus>

    <Menus text="会员管理" imgUrl="../images/main_02.jpg" ID="7">
    <MenuItem ID="7" Text="会员列表页面" href="/member/GetmemberList.html" target="main" onclick="replay(this)"></MenuItem >
    </Menus>
    </NavMenu>
    </doc>

    2.MVC的View页面,<%%>里的C#代码可以直接应用于一般处理程序或BLL层或者Controllers中。

    此段代码的主要思想是将存在XML里的标题权限ID是否存在于Session里的泛型集合(从数据库查出全权限的DataSet),若有则显示该标题(大标题ID是从属于它的小标题ID通过逗号拼接的字符串)。

    <%string xmlfile = Server.MapPath("") + "\\XML\\Menu.xml"; //Server.MapPath(“”) 返回当前页面的物理路径;” \XML\\Menu.xml”, 和前边的字符串合起来为XML文档所在的路径
    System.Xml.XmlTextReader reader
    = new System.Xml.XmlTextReader(xmlfile);//XML文档读取器声明
    List
    <System.Data.DataTable> listTb = new List<System.Data.DataTable>();//声明新的泛型
    var mobel
    = (命名空间.Model.Admin_UserModel)Session["txtuname"];//将Session取出类型转换为实体类
    listTb
    = mobel.AU_list;////将Session中的泛型(也是DataTable类型)取出s
    while (reader.Read())
    {
    %>
    <% if (reader.NodeType == System.Xml.XmlNodeType.Element)
    {
    if (reader.Name == "Menus") //对应XML里的大标题
    {
    string str = reader["ID"].ToString(); //XML里的大标题ID
    string[] strArr = str.Split(',');
    //lamda表达式返回 tr(若XML里的节点是否存在于Session里的泛型,则返回泛型集合)
    List
    <System.Data.DataTable> Tr = listTb.FindAll(delegate(System.Data.DataTable t) {
    foreach (System.Data.DataRow dr in t.Rows)
    {
    if (strArr.Length > 1)
    {
    if (strArr[0] == dr["AUP_PermissionID"].ToString() || strArr[1] == dr["AUP_PermissionID"].ToString())
    {
    return
    true;
    }
    }
    else{
    if (strArr[0] == dr["AUP_PermissionID"].ToString())
    {
    return
    true;
    }
    }
    }
    return
    false;
    });

    if (Tr.Count!=0)
    {
    %>
    <div class="nav1">
    <img src="<%=reader["imgUrl"].ToString() %>" /><%=reader["text"].ToString()%></div>
    <%
    }
    }
    %>
    <div class="foter">
    <ul>
    <%if (reader.Name == "MenuItem") //对应XML里的小标题(操作与大标题相似)
    {

    List
    <System.Data.DataTable> Tr = listTb.FindAll(delegate(System.Data.DataTable t)
    {
    foreach (System.Data.DataRow dr in t.Rows)
    {
    if (reader["ID"] == dr["AUP_PermissionID"].ToString())
    {
    return
    true;
    }
    }
    return
    false;
    });


    if (Tr.Count!=0l)
    {
    %>
    <li><a href="<%=reader["href"].ToString() %>" target="main" onclick="replay(this)">
    <%=reader["Text"].ToString()%></a></li>
    <%}
    }
    %>
    </ul>
    </div>
    <%} %>
    <%} %>


    就这些,有些麻烦但是很容易理解,难一点的也许就是/lamda表达式那块



  • 相关阅读:
    iOS中SQLite知识点总结1
    iOS/mac开发的一些知名个人博客
    ReactiveCocoa框架学习2
    安装visual studio2017后 首次启动出现ActivityLog.xml异常解决方法
    《软工实践》第零次作业
    在Android Studio2.3中配置OpenCV4Android SDK
    【Try Kotlin】Kotlin Koans 代码笔记
    树-二叉搜索树-AVL树
    八种常见排序算法
    迷の衬衫()
  • 原文地址:https://www.cnblogs.com/ereryday/p/2367030.html
Copyright © 2020-2023  润新知