ciao,
potresti usare l'
MvcSiteMapProvider, un'implementazione del SiteMapProvider di ASP.NET che ti consentirà di generare un menu gerarchico.
In particolare leggi questa pagina della wiki, che ti mostra come recuperare l'elenco dei nodi dal database.
https://github.com/maartenba/MvcSiteMapProvider/wiki/Defining-sitemap-nodes-using-IDynamicNodeProvidergraficaweb ha scritto:
Inoltre vorrei sapere come fare per gestire il routing in maniera intelligente per un miglio SEO...
Le routes da scrivere dipendono da come sono organizzati gerarchicamente i tuoi contenuti. Se vuoi essere abbastanza preciso, non aver paura di arrivare a scrivere una o più routes per controller, se richiesto.
Ad esempio, per il controller dei prodotti potresti creare queste due:
routes.MapRoute(
name: "SchedaProdotto",
url: "prodotti/{categoria}/{prodotto}",
defaults: new { controller = "Prodotti", action = "Scheda" }
);
routes.MapRoute(
name: "ElencoProdotti",
url: "prodotti/{categoria}",
defaults: new { controller = "Prodotti", action = "Elenco", categoria = UrlParameter.Optional }
);
...che corrisponderanno a queste due actions nel ProdottiController.
public ActionResult Scheda(string categoria, string prodotto) {
//qui estrai dal database il prodotto indicato e restituisci la view della scheda prodotto
}
public ActionResult Elenco(string categoria)
{
//qui restituisci la view di elenco dei prodotti nella categoria data
//se la categoria è null, restituisci la view di tutti i prodotti
}
Come vedi, per migliorare la leggibilità dell'url, ho usato delle stringhe anziché dei numeri per identificare categoria e prodotto. Questo significa che nel tuo database dovrà esserci una colonna varchar che identifica univocamente una categoria o prodotto. Nel gergo tecnico, questa stringa identificativa si chiama
slug e spesso viene calcolata a partire dal titolo.
Ecco ad esempio un algoritmo che rimuove spazi vuoti e caratteri non validi, affinché si possa poi usare nell'URL.
https://gist.github.com/onebeatconsumer/1329568Eseguilo quando l'amministratore del sito salva una nuova categoria o prodotto. Assicurati che ci sia un vincolo di univocità sulla colonna in cui inserisci lo slug, altrimenti rischi di trovarti con due prodotti che hanno lo stesso valore.
ciao,
Moreno
Modificato da BrightSoul il 08 marzo 2014 13.51 -