C#, MVC 3 Root Route scheint nicht zu funktionieren
EDIT: Sorry, ich erklärte es schlecht. Im Grunde, in der im folgenden Beispiel möchte ich "das-ist-erledigt-von-Inhalt-controller", "id", also kann ich es packen im ContentController als action-parameter verwenden, aber ich möchte den Zugang über das Stammverzeichnis der Website, e.g mysite.com/this-is-not-passed-to-homecontroller.
Ich versuche zum erstellen einer root-route werden, die an einen separaten controller (anstatt zu Hause).
Habe ich folgte die "RootController" Beispiel gepostet irgendwo sonst implementiert IRouteConstraint aber es scheint einfach nicht zu funktionieren und ich habe schon verschwendet ein paar Stunden!
Grundsätzlich habe ich einen LoginController, einem HomeController, und einen ContentController.
Ich möchte in der Lage sein, HomeController/Index werde http://mysite/. Ich möchte in der Lage sein, LoginController/Index werde http://mysite/Login. Aber.. ich will die ContentController/Index aufgerufen werden, wenn ein anderes Ergebnis Eintritt, - e.g: http:/mysite/this-is-handled-by-content-controller
Gibt es einen eleganten Weg, dies zu tun, die funktioniert?
Das war mein letzter Versuch.. ich habe cut/eingefügt/kopiert/kratzte mich am Kopf so viele Male, die ein bisschen chaotisch:
routes.MapRoute(
"ContentPages",
"{action}",
new { Area = "", controller = "ContentPages", action = "View", id = UrlParameter.Optional },
new RootActionConstraint()
);
routes.MapRoute(
"Default", //Route name
"{controller}/{action}/{id}", //URL with parameters
new { Area = "", controller = "Home", action = "Index", id = UrlParameter.Optional }, //Parameter defaults
new string[] { "Website.Controllers" }
);
Jede Hilfe ist willkommen sehr!
chem
InformationsquelleAutor Simon | 2011-02-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde etwas tun, ähnlich wie diese, obwohl das vielleicht nicht die beste Lösung, wenn Sie halten das hinzufügen mehr controller in der Zukunft.
Der erste Weg ist für deine youwebsite.com/, die nennen Ihre Home->Index. Die zweite route ist für andere Aktionen auf Ihrem Home-Controllers (yourwebsite.com/home/ACTION).
Die 3. ist für Ihren LoginController (yourwebsite.com/login/ACTION).
Und die Letzte ist für Ihre Inhalte->Index (yourwebsite.com/anything-that-goes-here).
Haben cut-off. Dass die route nicht funktioniert, wenn ich die default route ({controller}/{action}/{id}) erklärt.
InformationsquelleAutor Dominic St-Pierre
Vorausgesetzt, Sie haben
ContentController.Index(string id)
zu handhaben Routen-matching die Einschränkung, sollte dies funktionieren:Ja,
RootActionConstraint
erwähnt wird durch die OP eine benutzerdefinierte Implementierung vonIRouteConstraint
.InformationsquelleAutor dahlbyk