.
Anmeldung | Registrieren | Hilfe
in Suchen

Routing über mehrere Navigationsebenen

Letzter Beitrag 19. Jul 2010 16:57 von Gordon Breuer. 2 Antworten.
Seite 1 von 1 (3 Treffer)
Beiträge sortieren: Zurück Weiter
  • 13. Jul 2010 20:50

    • Gordon Breuer
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 04. Jun 2008
    • Frankfurt a.M.
    • Beiträge 345
    • Punkte 5.730
    • Moderator

    Routing über mehrere Navigationsebenen

    Bei einem aktuellen Projekt soll das Routing der Website nach einem navigationsbasiertem Schema erfolgen: http://domain.tld/NameHauptmenüpunkt/NameUnterpunkt/NameUnterUnterpunkt/...

    Leider stehe ich gerade etwas auf dem Schlauch, wie ich ein solches Routing möglichst dynamisch mit beliebig vielen Ebenen realisieren kann. Der bisherige Ansatz sah so aus: http://domain.tld/id--NameUnterUnterpunkt/
    Dabei wurde wie ersichtlich zusätzlich die ID aus der Datenbank der letzten Ebene / des gewünschten Menüpunktes mit eingebunden und der Name war "egal" und nur zwecks SEO da. Die jetzt gewünschte URL-Struktur hingegen soll ja quasi einer Breadcrum-Navigation entsprechen.

    Das Modell für die Navigation hat im wesentlichen folgende Eigenschaften für jeden Navigationspunkt:

    • ID (unique)
    • ID-Parent (nullable)
    • Name des Menüpunktes
    • Ebene (0 = Hauptmenü, 1 = eine Ebene unterhalb des Hauptmenüs, etc. ...)
    • Zu verwendender Controller-Name
    • Zu verwendende Action-Methode

    Mein Problem ist jetzt wie ich meine Route(n) so definieren kann, dass ich mit einer beliebigen Navigationstiefe arbeiten kann?

    Mir spukt gerade als erster Ansatz im Kopf herum, dass ich einen Controller / Actionmethode haben muss, die sich die URL nimmt (wie komme ich innerhalb der Actionmethode am geschicktesten daran?) und dann den Navigationspunkt mit der Ebene 2 und dem Namen "NameUnterUnterpunkt" raussucht, der als Parent den Navigationspunkt mit der Ebene 1 und dem Namen "NameUnterpunkt", der als Parent den Navigationspunkt mit der Ebene 0 und dem Namen "NameHauptmenüpunkt", hat raussuche .... Tongue Tied Hmm

    OK, genug von meinen verwirrten Gedankenansätzen ... brauche glaube ich mal ein paar andere Blickwinkel auf das Problem - Brett -> Kopf Huh?

    Hilfe? :-)
    --Gordon

    • IP-Adresse ist Registriert
  • 13. Jul 2010 21:30 Antwort zu

    Routing über mehrere Navigationsebenen

    Antworten
    Hallo Gordon,

    um eine beliebige Anzahl von Ebenen darzustellen wirst du um eine Wildcard-Route nicht herumkommen.

    Diese Wildcard-Route würde dann z.B. so aussehen:
    routes.MapRoute(
        "Default",
        "{*path}",
        new
        {
            controller = "Home",
            action = "Index"
        }
    );

    Der mit dem Sternchen gekennzeichnete Parameter ist in diesem Fall der Wildcard-Parameter, d.h. dahinter können belibig viele Elemente stehen.

    Im Controller bekommst du dann in der Variable "path" einen String den du (sofern mehr als ein Level vorhanden ist) splitten musst.

    public ActionResult Index(string path)
    {
    var levels = path.Split('/');
    // Die entsprechende Seite in der DB suchen...
    }


    Ich hoffe das hilft für den Anfang.
    Philip

    • IP-Adresse ist Registriert
  • 19. Jul 2010 16:57 Antwort zu

    • Gordon Breuer
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 04. Jun 2008
    • Frankfurt a.M.
    • Beiträge 345
    • Punkte 5.730
    • Moderator

    Routing über mehrere Navigationsebenen

    Jap, das war der richtige Denkanstoß. Danke :)
    • IP-Adresse ist Registriert
Seite 1 von 1 (3 Treffer)

WPF Forum | ASP.NET Forum | ASP.NET MVC Forum | Silverlight Forum | Windows Phone 7 Forum | SharePoint Forum | Dotnet Jobs | Dotnet Termine | Developer Blogs | Dotnet News

Das Team | Regeln | Impressum