Posso generare percorsi ASP.NET MVC da una mappa del sito?
-
08-06-2019 - |
Domanda
Sto pensando di imparare il ASP.NET MVC
quadro per un progetto imminente.Posso utilizzare il routing avanzato per creare URL lunghi basati sulla gerarchia della mappa del sito?
Esempio di percorso di navigazione:
Home > Negozio > Prodotti > Casalinghi > Cucina > Pentole > Set da cucina > Antiaderente
URL MVC tipico (credo):
http://example.com/products/category/NonstickCooksets
URL desiderato:
http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick
Posso farlo?
Soluzione
Zack, se ho capito bene, vuoi una profondità illimitata delle sottocategorie.Nessun problema, da quando MVC Preview 3 (penso 3 o 4) questo è stato risolto.
Basta definire un percorso come
"{controller}/{azione}/{*categoryPath}"
per un URL come:
http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick
dovresti avere un ShopController con un'azione Products:
public class ShopController : Controller
{
...
public ActionResult Products(string categoryPath)
{
// the categoryPath value would be
// "household/kitchen/cookware/cooksets/nonstick". Process it (for ex. split it)
// and then decide what you do..
return View();
}
Altri suggerimenti
Il routing MVC ti consente di definire praticamente qualsiasi struttura tu voglia, devi solo definire cosa significa semanticamente ciascuno dei pezzi.Puoi avere bit "hardcoded", come "negozio/prodotti", e quindi definire il resto come variabile, "{categoria}/{sottocategoria}/{specialità}", ecc.
Se lo desideri, puoi anche definire diversi percorsi mappati tutti allo stesso punto finale.Fondamentalmente, quando un URL entra nella tua app MVC, passa attraverso la tabella di routing finché non trova un modello che corrisponde, compila le variabili e trasmette la richiesta al controller appropriato per l'elaborazione.
Sebbene il percorso predefinito sia un semplice tipo di configurazione Controller, Azione, Id, questo non è certamente l'ambito di ciò che puoi fare.