Eine der größten Hürden, die ich in letzter Zeit zu haben scheint, besteht darin, einige der komplexeren Routing-Anforderungen für einige MVC-basierte Anwendungen zu berücksichtigen, die ich entwickelt habe. Ich habe Probleme, die richtigen Lernprogramme zu finden, um mich durch ein vollständiges Verständnis zu führen.
Was ich gerne finden würde, ist ein kompletter Satz von Tutorials für alles, was von Basic (Controller / Action / ID) zu Advanced geht.
Ein Beispiel dafür, was ich Advanced Routing nenne, sind Dinge wie:
/blog/year/month/day/title
- würde dem Controller zugeordnet werden: blog
und action: post
und als Parameter: year
, month
, day
und title
/blog/title
- würde dem Controller zugeordnet werden: blog
und action: post
und als Parameter: title
/title
- würde dem Controller zugeordnet werden: blog
und action: post
und als Parameter: title
Ich könnte jede mögliche Menge einer globalen Route mit einer expliziten Route unter Verwendung einer Datenbank zuordnen, aber das scheint den Punkt zu besiegen, an dem die Route-Engine zum richtigen Ort geroutet wird. Ich würde die Regel lieber einmal definieren.
Ich verstehe nicht, warum können Sie nicht einfach jeden von ihnen als separate Route definieren, indem Sie bei Bedarf regulären Ausdruck verwenden. Zum Beispiel, um zwischen /blog/year/month/day/title
und /blog/title
zu unterscheiden.
Jedes dieser Sets ist ein separater Fall, und Sie müssen MVC mitteilen, was mit jedem einzelnen zu tun ist. Sie können dies über defining the rule once
in der Global.asax.cs
-Datei tun:
Für den ersten Fall: /blog/year/month/day/title
Für den zweiten Fall: /blog/title
Für den letzten Fall: /title
Der Trick besteht darin, diese Routen in genau dieser Reihenfolge zu platzieren, mit den am wenigsten spezifischen unten. Das Ändern der Reihenfolge würde dazu führen, dass die falsche Route verwendet wird (speziell in den letzten beiden). Wenn der letzte Fall mit dem zweiten Fall geändert wurde, würden URLs vom Typ blog/SomeTitle
an die Aktion post
mit blog
als Titel weitergeleitet.
Wenn Sie eine Route für etwas erstellen, beachten Sie Folgendes:
very
achte auf die Reihenfolge der Route (welche Route kommt vor) {something}
bezeichnen Aktionsparameter Einige gute Tutorials:
Tags und Links asp.net-mvc asp.net-routing