Einmal gibt es keine Routen über dem angezeigten Mapping abgebildet sind, die die Route von
urlHelper.Action("Action", "Controller", routeValueDictionary);
erzeugt mithalten können dann würden Sie in Ihrer Annahme sicher in Verwenden des Routennamens
wenn Sie zum Beispiel zwei Routen haben wie folgt definiert ...
routes.MapRoute(
"AnotherRouteName",
"{controller}/blah/{action}",
new { controller = "Controller", action = "Action" }
);
routes.MapRoute(
"RouteName",
"Url",
new { controller = "Controller", action = "Action" }
);
... dann die erste Route durch ..
urlHelper.Action("Action", "Controller", routeValueDictionary);
UPDATE abgestimmt würde:
Wenn Sie sich die Quelle für UrlHelper ansehen
Sie werden feststellen, dass intern t Sie rufen dieselben Überladungen der gleichen Methoden mit relevanten Argumenten auf.
public virtual string Action(string actionName, string controllerName, object routeValues)
{
return GenerateUrl(null /* routeName */, actionName, controllerName, TypeHelper.ObjectToDictionary(routeValues));
}
public virtual string Action(string actionName, string controllerName, RouteValueDictionary routeValues)
{
return GenerateUrl(null /* routeName */, actionName, controllerName, routeValues);
}
//...other code removed for brevity
public virtual string RouteUrl(string routeName, object routeValues, string protocol)
{
return GenerateUrl(routeName, null /* actionName */, null /* controllerName */, protocol, null /* hostName */, null /* fragment */, TypeHelper.ObjectToDictionary(routeValues), RouteCollection, RequestContext, false /* includeImplicitMvcValues */);
}
Viel zu viel Code hier zu posten. Werfen Sie einen Blick auf die Klassenquelle, um ein besseres Verständnis davon zu bekommen, was unter der Haube passiert.
Kann nicht mehr Details als das bereitstellen. Ich bin den ganzen Weg zurück zum Quellcode gegangen.
Wahr, vorausgesetzt, dass meine Routen eindeutige "Controller" - und "Action" -Kombos haben, wären "Action" und "RouteUrl" genau gleichwertig? –
vorausgesetzt, sie haben die gleichen Routenwerte – Nkosi