Web.SiteMap 是 VS2005中一个非常重要的特性. 可以用于菜单等应用,但企业的应用中经常需要控制到 菜单的 target ,菜单的权限等.

通过扩展一些自定义属性可以实现(此方法已经在E8.Net 2.0 工作流应用架构中实现)

sitmap 范例:

 <siteMapNode title="主页" url="Newmain.aspx" target="_parent" disenable="true" startIndex="1"  AdminIndex="9">
    <siteMapNode title="我的桌面" img="skins/2004/images/icon/desktop.gif"  menuIndex="1"  url ="~\1.aspx">
      <siteMapNode title="待办事项" url="~\Forms\frmContent.aspx" description="待办事项"  targeturl="" />
      <siteMapNode title="我登记事件" url="~\Forms\frmWaittingContent.aspx?TypeContent=MyReg" description="我登记事件"/>
      <siteMapNode title="出差授权" url="~\Forms\FrmAgentSet.aspx" description="出差授权"/>
      <siteMapNode title="计算器"  url="~\Forms\Calculator.htm" description="计算器"/>
      <siteMapNode title="万年历" url="~\Forms\wnl.htm" description="万年历"/>
      <siteMapNode title="修改密码" url="~\Forms\FrmModuser.aspx" description="修改密码"/>
    </siteMapNode>
    <siteMapNode title="客户服务" img ="skins/2004/images/icon/sContacts.gif" menuIndex="2"  url ="~\2.aspx">
      <siteMapNode title="客户服务登记" resourceKey="1824" url="~\Forms\form_all_flowmodel.aspx?appid=1026" description="客户服务登记"/>
      <siteMapNode title="客户服务跟踪" resourceKey="1811" url="~\AppForms\CST_Issue_List.aspx" description="客户服务跟踪"/>
      <siteMapNode title="抱怨投诉登记" resourceKey="1825"  url="~\Forms\form_all_flowmodel.aspx?AppID=320" description="抱怨投诉登记"/>
      <siteMapNode title="抱怨投诉查询" resourceKey="207"  url="~\AppForms\frm_BYTS_Query.aspx" description="抱怨投诉查询"/>
      <siteMapNode title="材料管理" resourceKey="1845" url="~\AppForms\frmMaterial.aspx" description="材料管理"/>
    </siteMapNode>
..
  </siteMapNode>
</siteMap>

可以看到 这个sitmap中 有 target  diseable resourcekey ...等扩展属性 来实现菜单权限控制 及控制方式等

实现代码:

 protected void TreeView1_TreeNodeDataBound(object sender, TreeNodeEventArgs e)
        {
            //节点
            SiteMapNode smn = (SiteMapNode)e.Node.DataItem;
            string strOpID = smn.ResourceKey;
            Epower.ITSM.SqlDAL.UIMethod ui = new Epower.ITSM.SqlDAL.UIMethod();

            string strTarget = smn["target"];

            if (strTarget != "")
            {
                e.Node.Target = strTarget;
            }


            if (strOpID != null && strOpID.Length > 0)
                ui.CheckNodeRight(strOpID, e.Node, (Hashtable)Session["UserAllRights"],TreeView1);
            
            
        }



 /**//// <summary>
        /// 如果为false,表示设置为没有权限的菜单移除
        /// </summary>
        /// <param name="strID"></param>
        /// <param name="item"></param>
        public void CheckNodeRight(string strID, TreeNode item, Hashtable htAllRights, TreeView TreeView1)
        {
            long OperatorID = 0;
            try
            {
                OperatorID = long.Parse(strID);
            }
            catch { }

            if (OperatorID == 0)
                return;

            RightEntity re = (RightEntity)htAllRights[OperatorID];
            if (re == null)
                return;
            else
            {
                if (re.CanRead == false)
                {
                    //移除菜单项
                    TreeNode pitem = item.Parent;
                    if (pitem != null)
                    {
                        pitem.ChildNodes.Remove(item);
                    }
                    else
                    {
                        TreeView1.Nodes.Remove(item);
                    }
                }
            }
        }

依据同样的方法,可以扩展更多的自定义属性,达到对sitMap 非常丰富的控制和展示逻辑.
E8.Net 工作流 开源架构 提供了全部实现的源码, 2.0下所有应用系统菜单(OUTLOOK风格),实现来自 web.siteMap

欢迎访问更多精彩内容: http://***/productFlow.htm

转载于:https://www.cnblogs.com/cancanwyq/articles/947319.html

Visual Studio 2005中web.sitemap 中扩展自定义属性的一些应用范例相关推荐

  1. 通过Visual Studio 2005的项目模板来加速开发过程

    page by Ameet Phadnis Feedback     简介: 记得在我第一次做项目的时候,我就在尝试找出一种方法来提高项目开始的效率(jump start my projects).在 ...

  2. 利用Visual Studio 2005的自动化测试工具来做数据导入

    * reference link: http://www.bentan.cn/Blog/Lists/Posts/Post.aspx?ID=3 1     引言 1.1         研究目标 在我们 ...

  3. Microsoft Visual Studio 2005中使用水晶报表

    Microsoft Visual Studio 2005中使用水晶报表 沈阳 王智 OICQ:16994162 http://wangzhihome.51.net/ 2006-4-11 如有转贴请注明 ...

  4. WSSv3 Technical Articles_使用Visual Studio 2005扩展创建Windows SharePoint Services 3.0 Web Part...

    WSSv3 Technical Articles_使用Visual Studio 2005扩展创建Windows SharePoint Services 3.0 Web Part 摘要:学习使用Mic ...

  5. Visual Studio 2005 中的 命令窗口

    "命令"窗口用于直接在 Visual Studio 集成开发环境 (IDE) 中执行命令或别名.可以执行菜单命令和不在任何菜单上显示的命令. 1 调用命令窗口: 若要显示" ...

  6. Visual Studio 2005中C++的变化

    下一代visual studio版本(以前whidbey,现在是visual studio 2005)提供更加丰富的改进的库文件和没有很多幕后精简和加速的压力,它的大量配合的工具和新的功能将使开发者的 ...

  7. 在Visual Studio 2005中调试SQL Server 2005的存储过程

    介绍 SQL Server 2000可以让我们在查询分析器中直接调试存储过程( 更多的信息请参看:用SQL Server 2000的查询分析器调试存储过程) 到了现在的SQL Server 2005, ...

  8. Visual Studio 2005 中的新增安全性功能

    Visual Studio 2005 中的新增安全性功能 Visual Studio 2005 中的新增安全性功能 发布日期: 11/18/2005 | 更新日期: 11/18/2005 Brian ...

  9. 在Visual Studio 2005中安装Qt 4.3.2

    1.正常安装Visual Studio 2005,只要安装了C++即可.注意:不是Express版本. 2.下载Qt源代码 Qt 4.3.2 Windows OpenSource版下载: http:/ ...

最新文章

  1. 【T07】不要低估tcp的性能
  2. Python入门100题 | 第015题
  3. Lost Numbers
  4. Rosenbrock函数到底什么用
  5. JavaScript中的arguments,callee,caller
  6. Python实现大自然数分解为最多4个平方数之和(1)
  7. 对象refresh的方法iadodc失败_3个必备cookie实用方法
  8. 【ACL2020】用于改进文本分类的特征投影
  9. AES算法,DES算法,RSA算法JAVA实现
  10. 软件测试面试必考的SQL语句
  11. java阅卷系统_基于jsp的考试阅卷系统-JavaEE实现考试阅卷系统 - java项目源码
  12. 【供应链架构day11】京东履约系统的演进之路
  13. ArcGIS根据矢量图层范围裁剪影像
  14. linux 硬盘品牌,CentOS如何查看硬盘品牌型号等具体信息
  15. Jointly Embedding Knowledge Graphs and Logical Rules
  16. 哈尔滨计算机管理,哈尔滨戴斯酒店计算机管理系统.doc
  17. pppd详解_PPPD
  18. oracle异地接管,群集的接管和故障恢复 - Oracle® ZFS Storage Appliance 管理指南,发行版 OS8.6.0...
  19. python 小说人物分析_Python文章相关性分析---金庸武侠小说分析
  20. Video Input with OpenCV and similarity measurement(使用opencv测量两个视频的相似度)

热门文章

  1. sudo apt-get update: 0% [正在等待报头]
  2. C# Task的用法
  3. 【BZOJ1085】【SCOI2005】骑士精神 [A*搜索]
  4. node.js+express,实现RESTful API
  5. 【Oracle 常用查询】oracle表空间使用率统计查询
  6. 使用Cbrgen和Setdest构造无线仿真环境
  7. 在.net开发中使用Log4Net组件
  8. Microsoft Enterprise Library 4.0 for Visual Studio 2008
  9. 用了CFileDialog后File 写文件不能写进去
  10. 算法------二叉树的层序遍历