Wie kann ich den Routennamen im Controller in ASP.NET MVC abrufen?
ASP.NET MVC Routen sind die Namen zugeordnet:
routes.MapRoute(
"Debug", //Route name -- how can I use this later????
"debug/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = string.Empty } );
Gibt es einen Weg, um der route einen Namen, z.B. "Debug" im obigen Beispiel? Ich möchte es in den controller OnActionExecuting, so dass ich einstellen können, Zeug in das ViewData beim Debuggen, zum Beispiel, indem eine URL mit /debug/...
InformationsquelleAutor der Frage Mike Scott | 2008-12-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Route-name nicht gespeichert ist in der route leider. Es ist nur intern im MVC, die als Schlüssel in einer Sammlung. Ich denke, das ist etwas, das Sie noch verwenden, wenn die Erstellung von links mit HtmlHelper.RouteLink zum Beispiel (vielleicht woanders auch, keine Ahnung).
Jedenfalls brauchte ich das auch und hier ist was ich getan habe:
So konnte ich registrieren eine route wie diese:
In meine Controller-action, ich kann auf der route name:
Hoffe, das hilft.
InformationsquelleAutor der Antwort Nicolas Cadilhac
Eine alternative Lösung könnte sein, die Lösung Konfigurationen:
Sollte es nicht wirklich immer notwendig sein, die Referenz den Namen der route ein, wie dieses - was ich vermute, ist, warum MVC macht es so schwierig, das zu tun diese Art der Sache.
InformationsquelleAutor der Antwort ajbeaven
Diese nicht direkt die Frage beantworten (wenn Sie möchten, pedantisch), aber das eigentliche Ziel scheint es zu sein, Holen Sie sich eine route auf die Basis-URL, da eine route name. Also, das ist, wie ich es gemacht habe:
Meine route definiert wurde, in
RouteConfig.cs
:Und um die Strecke zu bekommen die Basis-URL:
Gab es mir die route auf die Basis-URL, die ich wollte:
Hoffe, das hilft.
InformationsquelleAutor der Antwort logicalguy
Könnte passieren route name route durch Werte mit default-Wert zusätzliche parameter:
Dann ist es möglich, den übergebenen Wert aus dem controller-context:
InformationsquelleAutor der Antwort Alexander
andere option - Nutzung mit MapRoute string[] namespaces argument, dann können Sie Ihre namespaces als
RouteData.DataTokens["Namespaces"]
InformationsquelleAutor der Antwort Мишка Коробков