Kann ich ASP.NET MVC-Routen aus einer Sitemap generieren?
-
08-06-2019 - |
Frage
Ich denke darüber nach, das zu lernen ASP.NET MVC
Rahmen für ein bevorstehendes Projekt.Kann ich das erweiterte Routing verwenden, um lange URLs basierend auf der Sitemap-Hierarchie zu erstellen?
Beispielnavigationspfad:
Startseite > Shop > Produkte > Haushalt > Küche > Kochgeschirr > Kochsets > Antihaftbeschichtet
Typische (glaube ich) MVC-URL:
http://example.com/products/category/NonstickCooksets
Gewünschte URL:
http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick
Darf ich das machen?
Lösung
Zack, wenn ich das richtig verstehe, willst du eine unbegrenzte Tiefe der Unterkategorien.Kein Problem, seit MVC Preview 3 (ich glaube 3 oder 4) wurde dies behoben.
Definieren Sie einfach eine Route wie
„{controller}/{action}/{*categoryPath}“
für eine URL wie:
http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick
Sie sollten einen ShopController mit einer Produkte-Aktion haben:
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();
}
Andere Tipps
Mit dem MVC-Routing können Sie so ziemlich jede gewünschte Struktur definieren. Sie müssen lediglich definieren, was die einzelnen Teile semantisch bedeuten.Sie können Bits haben, die „fest codiert“ sind, wie „shop/products“, und den Rest dann als Variable definieren, „{category}/{subcategory}/{speciality}“ usw.
Wenn Sie möchten, können Sie auch mehrere Routen definieren, die alle demselben Endpunkt zugeordnet sind.Wenn eine URL in Ihre MVC-App gelangt, durchläuft sie grundsätzlich die Routing-Tabelle, bis sie ein passendes Muster findet, füllt die Variablen aus und leitet die Anfrage zur Verarbeitung an den entsprechenden Controller weiter.
Während die Standardroute eine einfache Einrichtung aus Controller, Aktion und ID ist, ist das sicherlich nicht der Umfang dessen, was Sie tun können.