Domanda

Di recente ho iniziato a usare Marteenba fornitore di sitemap, perché non riuscivo a risolvere un problema di percorso con l'altro sitemap che avevo. È molto meglio del mio precedente. La mia domanda è: come posso creare diversi percorsi per pane dalle pagine che vanno a una singola pagina principale? Considera l'idea qui sotto:

Struttura di sitemap

<mvcSiteMapNode title="Home" controller="Home" action="Index" changeFrequency="Always" updatePriority="Normal">
       <mvcSiteMapNode title="Clients Search" controller="ClientBussiness" action="ClientSearch" description="Clients Search">
            <mvcSiteMapNode title="Contract Analysis" controller="Contract" action="Index"/>
        </mvcSiteMapNode>

        <mvcSiteMapNode title="Advanced Search" controller="ClientBussiness" action="AdvancedSearch" description="Clients Advanced Search">
            <mvcSiteMapNode title="Contract Analysis" controller="Contract" action="Index"/>
        </mvcSiteMapNode>

        <mvcSiteMapNode title="Another Search" controller="ClientBussiness" action="AnotherSearch" description="Clients Another Search">
            <mvcSiteMapNode title="Contract Analysis" controller="Contract" action="Index"/>
        </mvcSiteMapNode>
</mvcSiteMapNode>

Nell'esempio sopra, la mia pista Breadcrumb mostra sempre la ricerca dei clienti del nodo anziché qualsiasi altro. Non so se dovrei creare percorsi diversi per ogni tipo di ricerca (l'ho fatto sulla mia ultima sitemap, ma sfortunatamente a IIS6 non mi è piaciuto).

Apprezzo il vostro aiuto.

MODIFICARE

Cercando sui forum ho trovato una domanda simile. Quindi, considera la struttura seguente:

Home >> Search >> Contracts
Home >> Another Search >> Contracts
Home >> Advanced Search >> Contracts
Home >> Web Service Search >> Extra fields >> Contracts
È stato utile?

Soluzione

Beh, sembra che tutto ciò che dovevo fare fosse aggiungere alcuni attributi di nodi dinamici sui miei controller. Puoi leggere come farlo qui. Usando l'esempio sopra, ecco come è fatto:

 [MvcSiteMapNodeAttribute(Title = "Search", Key = "search", ParentKey = "ContractSearch", Route = "SearchRoute")]
        [MvcSiteMapNodeAttribute(Title = "AdvancedSearch", Key = "ContractAdvSearch", ParentKey = "AdvSearch", Route = "AdvSearchRoute")]
        [MvcSiteMapNodeAttribute(Title = "AnotherSearch", Key = "ContractAnotherSearch", ParentKey = "AnotherSearch", Route = "AnotherSearchRoute")]
        public ActionResult ContractIndex()
{
   //Things to do...         
}

Nell'esempio sopra, ogni tipo di ricerca verrà correttamente definito sulla pista di pane. Tieni presente che devi definire percorsi diversi per ogni tipo di "ricerca" che vuoi usare. Quindi, se vuoi avere 3 nodi che puntano allo stesso URL, ogni nodo deve avere il proprio percorso ed è la chiave, definita su MvcSiteMapNodeAttribute.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top