示例#1
0
        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);
            }
        }
示例#2
0
        public static void MapRouteMaps(this RouteCollection routes, Action <RouteMapRegistration> registrationExpression)
        {
            var registration = new RouteMapRegistration();

            registrationExpression.Invoke(registration);

            Map(routes, registration);
        }