程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> Visual Studio 2005中web.sitmap 中擴展自定義屬性的一些應用范例

Visual Studio 2005中web.sitmap 中擴展自定義屬性的一些應用范例

編輯:.NET實例教程

Web.SitMap 是 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>
&nbsp;       /// <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.sitMap

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved