internal static void Map(RouteCollection routes, RouteMapRegistration registration) { var routeMapRoutes = new List <RouteMapRoute>(); foreach (var action in registration.Actions) { var controllerType = action.DeclaringType; var controllerName = GetControllerName(controllerType); var actionName = GetActionName(action); var routeMapAttributes = GetCustomAttributes <IRouteMapAttribute>(action, false); foreach (var routeMapAttribute in routeMapAttributes) { var routeMapRoute = new RouteMapRoute(routeMapAttribute.Url, new MvcRouteHandler()) { Order = routeMapAttribute.Order, Defaults = routeMapAttribute.GetDefaults() ?? new RouteValueDictionary(), Constraints = routeMapAttribute.GetConstraints() ?? new RouteValueDictionary() }; routeMapRoute.Defaults["controller"] = controllerName; routeMapRoute.Defaults["action"] = actionName; routeMapRoutes.Add(routeMapRoute); } } foreach (var routeMapRoute in routeMapRoutes.OrderBy(x => x.Order)) { routes.Add(routeMapRoute.Name, routeMapRoute); } }
public static void MapRouteMaps(this RouteCollection routes, Action <RouteMapRegistration> registrationExpression) { var registration = new RouteMapRegistration(); registrationExpression.Invoke(registration); Map(routes, registration); }