Ich habe eine Web-Anwendung mit MVC 2 Preview 2 und nachdem alle Routen registriert sind, muss ich jede Route in einem Dekorator weiter unten in der Kette wickeln. Das Problem ist, das Routing zu unterbrechen. Am Ende wird die GetVirtualPath-Methode fälschlicherweise für andere Bereiche in der Anwendung übereinstimmen (ich verwende Einzelprojektbereiche). Es spielt keine Rolle, ob der Dekorateur etwas Nützliches tut oder nicht. Mit dem folgenden Passthrough brauchen Sie nur, um es zu brechen.Warum unterbrechen Routenplaner das Routing in ASP.NET MVC 2?
public class RouteDecorator: RouteBase
{
readonly RouteBase _route;
public RouteDecorator(RouteBase route)
{
_route = route;
}
public override RouteData GetRouteData(HttpContextBase context)
{
return _route.GetRouteData(context);
}
public override VirtualPathData GetVirtualPath(RequestContext context, RouteValueDictionary values)
{
return _route.GetVirtualPath(context, values);
}
}
Ich ordne den Dekorator in einer einfachen Schleife, nachdem alle Routen registriert sind.
var routes = RouteTable.Routes;
for (var i = 0; i < routes.Count; i++)
{
routes[i] = new RouteDecorator(routes[i]);
}
Wie kann ich einen Dekorateur sicher einfügen, ohne Routen und Bereiche zu unterbrechen?
Ich habe eine Reproduktionslösung verfügbar to download here. In der Reproduktion ist der Routenbildner auskommentiert. Ein erneutes Kommentieren unterbricht das Routing, und die Routing-Daten des ersten Dummy-Bereichs stimmen mit den Links überein, die normalerweise nur dem entsprechenden Namespace entsprechen.
Danke für die Mühe. Das Implementieren von IRouteWithArea korrigiert das Problem Carte Blanche nicht, aber es könnte mich in eine neue Richtung führen. Vielen Dank. –
Der Decorator scheint die Route mehr als einmal zu umhüllen. Ich habe meine Antwort mit dem Code für die Implementierung einer funktionierenden Lösung bearbeitet, obwohl ich im Idealfall herausfinden möchte, warum dies passiert, da es ziemlich seltsam ist. –
Dies ist definitiv die Antwort auf das Problem. Ich habe das Thema "Laichdekorateur" nicht verstanden. Dies ist ein seltsames Verhalten oder ein erwartetes Verhalten mit einem Mangel an Verständnis, warum es passiert. –