ASP.Net MVC-Umleitungen, Bestimmte Routen zu Externen Website
Habe ich eine gut funktionierende ASP.Net MVC-Website mit Hilfe der einfachen standard-routing-Schema:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
Mein Kunde möchte die Umleitung von statischen Seiten auf einen sekundären Standort, so dass Sie Sie Bearbeiten können, - Vorlage-Stil, bei wird. Die Seiten, die tatsächlich etwas tun, bleiben auf der original-Website.
Was ich tun müssen, ist die Routen einrichten für meine funktionale views/controller-Aktionen und leiten die verbleibenden urls der externen Links, unabhängig davon, ob oder nicht der angegebenen url einen passenden controller/action. Ich don ' T wollen, um Durcheinander mit den bestehenden code, aber mit routing zum ausführen einiger der Seiten und leiten Sie von anderen.
Beispiel:
mysite.com/sponsors/signup ausgeführt werden würde
mysite.com/sponsors/information würde umgeleitet werden
Obwohl die Sponsoren-controller enthält Aktionen für Anmeldungen und Informationen und es gibt bereits Ansichten für beide Anmeldung und Informationen.
So weit, dass ich nicht in der Lage gewesen zu wickeln meinem Kopf herum, einen Weg, dies zu tun.
Irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Attribut-routing um es einfacher zu machen.
Ihre RouteConfig wird wie folgt Aussehen:
Dann können Sie eine Aktion hinzufügen, wie unten:
BEARBEITEN EINER
Wenn Sie nicht möchten, zu verwenden Attribut-routing, Sie noch gehen zu müssen, die Aktion aber Ihre RouteConfig wird wie folgt Aussehen:
Im routing wie folgt aus, wenn die übereinstimmung gefunden wird, den rest der Strecken werden ignoriert. Also, würden Sie wollen, setzen die meisten spezifische route auf der Oberseite und die meisten Allgemeinen in der unteren
Bearbeitung von ZWEI (bezogen auf den Kommentar)
Können Sie einen einfachen appsettings in Web.config wie folgt:
Dann in
RegisterRoutes
Lesen Sie es wie unten und die Entscheidung zu treffen.Browser manchmal speichert diese leitet, so möchten Sie vielleicht zu empfehlen, clearing-browser-caches wenn Sie diese Einstellungen ändern. Überprüfen Sie diese superuser-post für das löschen des cache für Chrome.
Haben Sie zwei Möglichkeiten
i) Dies ist der perfekte Anwendungsfall zum schreiben eines benutzerdefinierten mvchandler, dass ist instatiated durch eine benutzerdefinierte IRoutehandler. Sie können diesem Beispiel Folgen.
http://www.eworldui.net/blog/post/2008/04/aspnet-mvc---legacy-url-routing.aspx.
ii) schreiben Sie HttpHandler für diese passenden Wege, die Sie können, leiten Sie Sie auf die andere Seite.
Schritt 1: fügen Sie diese zu RouteConfig.cs
Routen.IgnoreRoute("yourwebpage.aspx");
Schritt 2: erstellen der neuen Datei im root der website namens "yourwebpage.aspx"
Schritt 3: Innerhalb yourwebpage.aspx setzen:
Ist es ziemlich einfach.
Erstellen Sie eine Aktion
Und in Routeconfig Datei hinzufügen