2008-08-18 12 views
3

Ich denke daran, das ASP.NET MVC-Framework für ein bevorstehendes Projekt zu lernen. Kann ich das erweiterte Routing verwenden, um lange URLs basierend auf der Sitemap-Hierarchie zu erstellen?Kann ich ASP.NET MVC-Routen aus einer XML-Sitemap generieren?

Beispiel Navigationspfad:
Home> Shop> Produkte> Haushalt> Küche> Kochgeschirr> Kochgeschirr> Nonstick

Typisch (glaube ich) MVC URL:
http://example.com/products/category/NonstickCooksets

Gewünschte URL:
http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick

Kann ich das tun?

Antwort

9

Zack, wenn ich richtig verstehe, wollen Sie unbegrenzte Tiefe der Unterkategorien. Kein Problem, seit MVC Preview 3 (ich denke 3 oder 4) wurde das gelöst.

Definieren Sie einfach eine Route wie

"{Controller}/{Aktion}/{* categoryPath}"

für eine URL wie:

http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick

sollten Sie eine haben ShopController mit einer Produktaktion:

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(); 
    } 
2

Mit dem MVC-Routing können Sie so ziemlich jede gewünschte Struktur definieren, Sie müssen nur definieren, was jedes Teil semantisch bedeutet. Sie können "fest codierte" Bits wie "Shop/Produkte" haben und dann den Rest als Variable "{Kategorie}/{Subkategorie}/{Spezialität}" usw. definieren.

Sie können auch Definieren Sie mehrere Routen, die alle auf den gleichen Endpunkt abgebildet werden. Wenn eine URL in Ihre MVC-App gelangt, durchläuft sie im Grunde die Routingtabelle, bis sie ein übereinstimmendes Muster findet, die Variablen ausfüllt und die Anfrage zur Verarbeitung an den entsprechenden Controller weiterleitet.

Während die Standardroute ist ein einfacher Controller, Aktion, Id Art der Einrichtung, das ist sicherlich nicht das Ausmaß dessen, was Sie tun können.

Verwandte Themen