Показать / Скрыть Меню / Повторитель SiteMap на MasterPage - PullRequest
1 голос
/ 19 июня 2011

Главная страница :

<ul>
    <li class="first"><asp:HyperLink runat="server" ID="lnkHome" 
        NavigateUrl="~/Forms/Default.aspx">Home</asp:HyperLink></li>

    <asp:Repeater runat="server" ID="Repeater1" DataSourceID="SiteMapDataSource1" 
        EnableViewState="False">
        <ItemTemplate>
            <li>
                <asp:HyperLink ID="HyperLink1" runat="server" 
                    NavigateUrl='<%# Eval("Url") %>'><%# Eval("Title") %>
                </asp:HyperLink>
            </li>
        </ItemTemplate>
    </asp:Repeater>
</ul>

Web.SiteMap

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >

  <siteMapNode id="SiteHome" url="~/Forms/Default.aspx" title="Home"  
        description="Default">
      <siteMapNode id="SiteAbout" url="~/Forms/Aboutus.aspx" title="About us"  
            description="About Us"/>
      <siteMapNode id="SiteNew" url="~/Forms/New.aspx" title="New"  
            description="My Sample Page"/>    
 </siteMapNode>

Дизайн:

ГЛАВНАЯ |О нас |Моя примерная страница


Я новичок в ASP.Net Webforms и создаю свой первый проект.Я использую Repeater для навигации по URL страниц.В моем коде «Master / Page.cs» мне нужно скрыть [страницу моего образца] на основе моей учетной записи.

что-то вроде:

if(UserGroup="Admin")
{
  //Show My Sample Page
  HOME | About us | My Sample Page 
}
else if(UserGroup="User1") 

{// Скрыть о нас НА ГЛАВНУЮ |О нас} else {// Показать только дома HOME}

Как это сделать в форме Загрузить?Спасибо с уважением ..

Ответы [ 2 ]

1 голос
/ 19 июня 2011

Правильный способ сделать это - определить поставщика карты сайта в вашем Web.Config и убедиться, что вы установили атрибут securityTrimmingEnabled="true".

<siteMap defaultProvider="MySiteMap">
 <providers>
   <clear/>
   <add 
     name="MySiteMap"
     type="System.Web.XmlSiteMapProvider" 
     securityTrimmingEnabled="true" 
     siteMapFile="~/Web.SiteMap" />
 </providers>
</siteMap>

В папке Forms создайте файл Web.Config и включите в него следующее

<?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
  <location path="New.aspx">
    <system.web>
      <authorization>       
        <deny users="?" />
      </authorization>
    </system.web>
  </location>
</configuration>

Теперь ASP.Net позаботится о том, чтобы показать, какие части вашего сайта соответствуют каким пользователям. Например: в этом случае она будет скрывать вашу My Sample Page страницу от неаутентифицированных пользователей.

0 голосов
/ 19 июня 2011

Попробуйте что-то вроде:

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Url") %>'
    Visible='Eval("Title") = "My Sample Page" ? this.IsAdmin.ToString() : "True"' >
    <%# Eval("Title") %>
</asp:HyperLink>
...