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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top