Erstellen einer benutzerdefinierten MVC -Routing -Lösung für hierarchische Seitenstrukturen
Erstellen eines robusten Inhaltsmanagementsystems erfordert häufig die Handhabung komplexer Seitenstrukturen mit mehreren Ebenen. Das Standard -MVC -Routing kann bei der Bereitstellung der erforderlichen Flexibilität für diese Aufgabe nicht möglich sind. Dieser Artikel beschreibt eine Lösung mit einer benutzerdefinierten RouteBase
-Subklasse, um solche hierarchischen Pfade zu verwalten.
Die Herausforderung liegt in der Abbildung beliebiger, mehrstufiger Pfade (z. B. news/local/mynewdog
) auf bestimmte Controller-Aktionen. Eine benutzerdefinierte Route, CustomPageRoute
, spricht dies anhand eines Vermittlers an, wobei diese komplexen Pfade in Standard -MVC -Routen übertragen werden.
Die Mechanik von CustomPageRoute
CustomPageRoute
stützt sich auf zwei Kernfunktionen:
Seitendatenab Abrufen: Es wird eine zwischengespeicherte Sammlung von PageInfo
-Objekten (aus einer Datenbank oder ähnlichen persistierenden Speicher abgerufen) verwendet, um Pfade an Controller und Aktionen zuzuordnen. Jeder PageInfo
Eintrag identifiziert eindeutig eine Seite und ihren entsprechenden virtuellen Pfad.
Pfad Matching und Erzeugung: TryFindMatch()
Überprüft, ob ein bestimmter Satz von Routenwerten (wie id
, controller
, action
) mit einem gültigen PageInfo
-Intrag übereinstimmt. Umgekehrt erzeugt GetVirtualPath()
einen virtuellen Pfad aus den bereitgestellten Routenwerten.
Implementierungsschritte
1. Registrierung von Routen: Integrieren Sie die benutzerdefinierte Route in Ihre Routing -Konfiguration:
<code class="language-csharp">routes.Add(name: "CustomPage", item: new CustomPageRoute());</code>
2. Controller -Aktion: Stellen Sie sicher, dass Ihre Anwendung die erforderliche Controller und Aktion enthält:
<code class="language-csharp">public class CustomPageController : Controller { public ActionResult Details(Guid id) { // Page-specific logic here return View(); } }</code>
3. Beispielpfade: Mit der benutzerdefinierten Route aktiv werden URLs wie diese korrekt behandelt:
/news/local/mynewdog
/Articles/events/conventions/mycon
Der CustomPageRoute
fängt diese Anforderungen ab, sucht die Übereinstimmung PageInfo
und leitet die Anforderung an die entsprechende Controller -Aktion weiter. Dies bietet eine saubere und effiziente Möglichkeit, Inhalte in einer Seitenstruktur mit mehreren Ebenen zu verwalten.
Das obige ist der detaillierte Inhalt vonWie können benutzerdefinierte MVC-Routing-Seitungsstrukturen mit mehreren Ebenen umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!