在NavigationMenu中隱藏SiteMapNode

因爲項目需要,不用asp.net本身自帶的role,在Web.sitemap中定義:

 

需在用戶爲admin或是contrib身份時顯示。我們可以建立一個方法:

 

SecurityUtil.CurrentUserCanAccess(SiteMapNode)

 

其中關鍵是獲得SiteMapNode的自定義屬性:

 

 

 

 

 

具體CurrentUserCanAccess方法在此不詳細介紹。有了上面的方法很容易根據項目具體情況處理。

 

然後在NavigationMenu中添加:

 

 

 

讀者可能要問爲什麼不直接在SiteMapNode上處理。我其實試過這個更方便的辦法。但SiteMap中不能刪除任何node。大概因爲是SiteMap對應於物理文件,我們顯然是不會想辦法去刪掉文件中任何東西。還有一個需要注意的是若最後一個方法寫入Page_PreRender中MenuItemCollection可是0,還沒有render。上面的辦法不僅代碼少,而且清晰直觀。

發佈了156 篇原創文章 · 獲贊 8 · 訪問量 41萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章