Jak mohu skrýt SiteMapPath kořenový uzel na domovské stránce?

hlasů
1

Jak mohu skrýt kořenový uzel v ovládacím prvku SiteMapPath když je uživatel na stránce kořen? Například můj strouhanka stezka na straně dítěte je:

Home> Produkty> Hammers> Kulový peen

což je v pořádku. Ale když se uživatel nachází na domovské stránce, ovládací SiteMapPath zobrazuje

Domov

který je k ničemu nepořádek. Chci potlačit zobrazování Home (kořenový uzel), když je uživatel na domovské stránce. Mám kontrolu SiteMapPath ve vzorové stránce. Také jsem manipulace SiteMapResolve nastavit querystrings v uzlech.

Položena 26/06/2009 v 19:47
zdroj uživatelem
V jiných jazycích...                            


10 odpovědí

hlasů
13

Jedním z možných řešení by bylo jednoduše schovat SiteMapPathovládací prvek na domovské stránce:

mySiteMapPath.Visible = (SiteMap.CurrentNode != SiteMap.RootNode);
Odpovězeno 26/06/2009 v 20:01
zdroj uživatelem

hlasů
3

Viděl jsem některé příklady kódu bázi, ale tady je levně řešení CSS (vaše cílové prohlížeče musí podporovat CSS 2.1 ačkoli), který bude skrývat na kořenový uzel a následující cestu odlučovače.

Zabít uzel kořenový nastavením RootNodeTemplate vyprázdnit třeba takto:

<asp:SiteMapPath ID="SiteMapPath1" runat="server" CssClass="breadCrumbTrail">
   <RootNodeTemplate></RootNodeTemplate>
</asp:SiteMapPath>

Že bude dělat to učinit nic pro kořenový uzel, ale bude stále zobrazen v kořenovém adresáři je cesta oddělovače, takže přidání těchto selektorů CSS do svého stylů (Pozor: Všiml jsem si dal můj SiteMapPath1 Prvek a CssClass s názvem ‚breadCrumbTrail‘):

.breadCrumbTrail
{
  font-size: small;
}

/*
First child element rendered by a SiteMapPath is an <a> tag you have no control over, 
adjacent to that is your root node's span tag, adjacent to that is the root node's 
path-separator span: don't display it.
*/
.breadCrumbTrail > a:first-child + span + span
{
  display: none;
}
Odpovězeno 08/01/2010 v 23:29
zdroj uživatelem

hlasů
2

Podařilo se mi přijít na to, ale chvíli trvalo, protože problém jsem měl poněkud jemnější. Schou-Rode má dobrý nápad, a to je to, co jsem dělal v Page_Loadbezúspěšně. Důvod, proč to nefunguje, je proto, že se klonování uzel SiteMapResolvea vrácení klon. To se stalo před Page_Loadtak SiteMap.CurrentNodeodkazoval klonu a srovnání s SiteMap.RootNodeselhal.

Zde je kompletní řešení:

protected void Page_Load(object sender, EventArgs e)
{
    SiteMapPath1.Visible = (SiteMap.CurrentNode != SiteMap.RootNode);
}

private SiteMapNode SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e)
{
    if (SiteMap.CurrentNode == null || SiteMap.CurrentNode == SiteMap.RootNode)
    {
        return SiteMap.CurrentNode;
    }
    // clone and set querystring in other nodes...
}
Odpovězeno 26/06/2009 v 20:12
zdroj uživatelem

hlasů
1

Měl jsem dolu zapojen do mého _Layout.cshtml a zjistil, že nejjednodušší řešení je zabalit příkazu if (s dříve navrhl logikou) kolem ovládání vykreslování bloku a nazývat to den:

@if (SiteMap.CurrentNode != SiteMap.RootNode)
{
  @Html.MvcSiteMap().SiteMapPath()
}
Odpovězeno 08/04/2013 v 03:30
zdroj uživatelem

hlasů
1

K dispozici je také ShowStartingNode nemovitosti na SiteMapDataSource. Tento příkaz je nastaven na hodnotu false zakrýt kořenový uzel.

Odpovězeno 17/08/2011 v 20:19
zdroj uživatelem

hlasů
1

Na domovské stránce, přidejte skript níže k části „hlavy“:

protected void Page_Load(object sender, EventArgs e)
{
    SiteMapPath sp = (SiteMapPath)Master.FindControl("SiteMapPath1");
    sp.Visible = (SiteMap.CurrentNode != SiteMap.RootNode);
}

Chcete-li použít výše uvedené metody, SiteMapPath1by měly být umístěny na vzorové stránce.

Odpovězeno 16/05/2011 v 13:02
zdroj uživatelem

hlasů
1

Jeden z správný způsob, jak skrýt SiteMapPath kořenový vědomí ve 3 snadných krocích:

  • Referenční MasterPage z ContentPage

    Příklad:

    <%@ MasterType VirtualPath="~/Master.master" %>
    
  • Udělat SiteMapPath jako chráněných vnitřních ve třídě návrháře

    Příklad:

    protected internal global::System.Web.UI.WebControls.SiteMapPath SiteMapPath1;
    
  • Schovat ji z ContentPage

    Příklad:

    Master.SiteMapPath1.Visible = (SiteMap.CurrentNode != SiteMap.RootNode);
    
Odpovězeno 26/05/2010 v 13:00
zdroj uživatelem

hlasů
0

ParentLevelsDisplayed = 0 pomůže

<asp:SiteMapPath ID="SiteMapPath1" runat="server" PathSeparator="" 
        ParentLevelsDisplayed="0" >
        <RootNodeTemplate></RootNodeTemplate>            
    </asp:SiteMapPath>
Odpovězeno 15/04/2015 v 12:50
zdroj uživatelem

hlasů
0

Nedávno jsem měl podobný problém, ale já jsem s použitím XmlDataSource pro menu v mé řešení.

Vzorek strukturu zdrojového XML:

<root>
  <Menu text="" url=""/>
  <Menu text="" url=""/>
</root>

Chcete-li nezobrazují položku ‚kořen‘ v menu, musíte jednoduché majetku set XPath na XmlDataSource na hodnotu ‚/ root / *‘

Odpovězeno 16/01/2011 v 20:45
zdroj uživatelem

hlasů
0
<asp:SiteMapPath ID="contentNavigation" runat="server">
    <RootNodeTemplate>
    </RootNodeTemplate>
</asp:SiteMapPath>

a css kód:

#ctl00_contentNavigation span:nth-child(2),span:nth-child(3)
{
    display:none;
}
Odpovězeno 05/04/2010 v 21:08
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more