角色与网站地图的结合
1、準在母版頁上加入導航菜單功能,數據源來自站點地圖。web.sitemap內容大致如下:
<?xml version="1.0" encoding="utf-8" ?> <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" enableLocalization ="true" ><siteMapNode title="主頁" url="~/Default.aspx"><siteMapNode title="文章" url="~/ShowCategories.aspx"><siteMapNode title="瀏覽文章" url="~/BrowseArticles.aspx" /></siteMapNode><siteMapNode title="購物" url="~/ShowDepartments.aspx"><siteMapNode title="購物卡" url="~/ShoppingCart.aspx" /><siteMapNode title="訂單記錄" url="~/OrderHistory.aspx" /><siteMapNode title="產品瀏覽" url="~/BrowseProducts.aspx"></siteMapNode></siteMapNode><siteMapNode title="論壇" url="~/ShowForums.aspx"><siteMapNode title="Show Thread" url="~/ShowThread.aspx" /></siteMapNode><siteMapNode title="關于" url="~/About.aspx" /><siteMapNode title="聯系" url="~/Contact.aspx" /><siteMapNode title="管理員" url="~/Admin/Default.aspx"><siteMapNode title="管理用戶" url="~/Admin/ManageUsers.aspx" ><siteMapNode title="編輯用戶" url="~/Admin/EditUser.aspx" /></siteMapNode><siteMapNode title="文章管理" url="~/Admin/ManageArticles.aspx" ><siteMapNode title="增加/修改 文章" url="~/Admin/AddEditArticle.aspx" /></siteMapNode></siteMapNode></siteMapNode> </siteMap>為什么主頁節點會作為根節點,而不是同其他節點在同一層次上?實際上這是可選的,我們希望SiteMapPath控件在頁面路徑的最前端始終顯示主頁鏈接,所以將主頁節點作為根節點。
網站根目錄下新建母版頁template.master,源視圖代碼:
<form id="form1" runat="server"><table><tr><td colspan="2" width="60%" bgcolor="#3399FF"> </td><td><asp:LoginView ID="LoginView1" runat="server"><AnonymousTemplate><asp:Login ID="Login1" runat="server"></asp:Login></AnonymousTemplate><LoggedInTemplate><asp:LoginName ID="LoginName1" FormatString="歡迎您,{0}!" runat="server" /><br /><asp:HyperLink ID="lnkProfile" NavigateUrl="~/EditProfile.aspx" runat="server">編輯用戶資料</asp:HyperLink><br/><asp:LoginStatus runat="server"></asp:LoginStatus></LoggedInTemplate></asp:LoginView></td></tr><tr><td width="20%" bgcolor="Lime"> </td><td><asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource1" StaticSubMenuIndent=""></asp:Menu><asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"></asp:ContentPlaceHolder></td><td width="20%" bgcolor="#3366FF"> </td></tr></table><asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" /></form>?
對應的設計視圖:
注意:這里用了LoginView控件來決定匿名用戶與登錄用戶呈現不同的部分。(該控件的用法請參考:http://www.cnblogs.com/netxiaochong/archive/2011/12/25/2301024.html)
menu控件的屬性如下設置:
<asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource1"
??????????????????????? StaticSubMenuIndent="" Orientation="Horizontal" StaticDisplayLevels="2"></asp:Menu>
新建Default.aspx頁面(若項目已有則刪除后重建),并應用母版頁template.master,瀏覽該頁面,看效果:
匿名用戶訪問此頁面的時候,以及非管理員角色(Administrators)的注冊用戶都是不能見到【管理員】菜單項的。
我們對web.sitemap進行相應的設置。
<siteMapNode title="管理員" url="~/Admin/Default.aspx" roles="Administrators">
還必須為網站地圖注冊一個新的提供程序(在web.config的<siteMap>中),設置其為securityTrimmingEnabled屬性為true。
提示:<siteMap>節點 位置放在<membership>之后,可能才正常!
?
再次運行default.aspx頁面,然后用[張魯魯]登錄系統,因為該用戶屬于Administrators角色,看看前后導航菜單的區別。
轉載于:https://www.cnblogs.com/netxiaochong/archive/2011/12/28/2304552.html
總結
以上是生活随笔為你收集整理的角色与网站地图的结合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 互联网金融--支付结算平台的测试
- 下一篇: IIS没有.net版本选择标签问题