Привязка пунктов меню к карте сайта - PullRequest
0 голосов
/ 25 мая 2010

это сводит меня с ума.

У меня есть меню навигации, которое я хотел бы отобразить на основе ролей пользователей (используя членство в сети.) После нескольких часов и головных болей (от удара головой о стол) мне было интересно, может ли кто-нибудь указать мне на ошибку моего пути.

Страница:

<body>
    <form runat="server">
    <div class="page">
        <div class="header">
            <div class="loginDisplay">
                <asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false">
                    <AnonymousTemplate>
                        <a href="~/Login.aspx" ID="HeadLoginStatus" runat="server">Log In</a> 
                    </AnonymousTemplate>
                    <LoggedInTemplate>
                        Welcome <span class="bold"><asp:LoginName ID="HeadLoginName" runat="server" /></span>!
                        [ <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out" LogoutPageUrl="~/Open/Close.aspx"/> ]
                    </LoggedInTemplate>
                </asp:LoginView>
            </div>
            <div class="clear hideSkiplink">
                <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" 
                    IncludeStyleBlock="False" Orientation="Horizontal"
                DataSourceID="AugustSiteMap" />
                <asp:SiteMapDataSource ID="AugustSiteMap" runat="server" ShowStartingNode="false"/>
            </div>
        </div>

SiteMap:

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="~/Default.aspx" title="Home"  description="Home">

    <siteMapNode title="Open Pages" description="Open Pages">
      <siteMapNode url="~/Open/Login.aspx" title="Login Page" description="Login Page" roles="*"/>
      <siteMapNode url="~/Open/Close.aspx" title="" description="" roles="*"/>

    </siteMapNode>

    <siteMapNode title="Logged In Open Pages" description="Logged In Open Pages">
      <siteMapNode url="~/Landing.aspx" title="Landing Page" description="Landing Page" roles="*"/>
      <siteMapNode url="~/ContactUs.aspx" title="Contact Us" description="Contact Us" roles="*"/>

    </siteMapNode>


    <siteMapNode title="Restricted Pages" description="Resticted Pages">
      <siteMapNode url="~/Restricted/ProductSearch.aspx" title=" Product Search" description=" Product Search" roles="*"/>
      <siteMapNode url="~/Restricted/ReportOutput.aspx" title="Report Output" description="Report Output" roles="Admin"/>
    </siteMapNode>



  </siteMapNode>

</siteMap>

WebConfig:

<roleManager enabled="true" />
      <siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
        <providers>

         <add name="XmlSiteMapProvider"
            description="AugustSiteMap"
            type="System.Web.XmlSiteMapProvider "
            siteMapFile="AugustSiteMap.sitemap"
            securityTrimmingEnabled="true" />
        </providers>
      </siteMap>

Как я могу убедиться, что при входе пользователя соответствующие пункты меню отображаются на целевой странице?

Проблема в том, что в настоящее время навигационное меню не создается ни в каком виде, ни в форме, ни в форме.

Пожалуйста, извините за мое невежество. Все еще новичок во всем этом, и мой нынешний метод «проб и ошибок» позволил мне достигнуть уровня самоубийства сегодня утром!

1 Ответ

0 голосов
/ 25 мая 2010

Не берите в голову - для тех, кто следует: это не правильный ответ.

Попробуйте использовать свойство DataSource вместо DataSourceId.

например.

DataSource="AugustSiteMap"

...