Beispiel #1
0
        public RouteEntry CreateRoute(DirectRouteFactoryContext context)
        {
            if (!context.TargetIsAction)
            {
                throw new InvalidOperationException("AutoNamedRouteAttribute should be only used on actions");
            }
            if (!context.Actions.Any())
            {
                throw new InvalidOperationException("Actions should be empty");
            }

            IDirectRouteBuilder builder = context.CreateBuilder(Template);
            // generate name:
            // get the first action descriptor from our list because we only need to get its name
            var actionDescriptor     = context.Actions.First();
            var controllerDescriptor = actionDescriptor.ControllerDescriptor;
            var actionName           = actionDescriptor.ActionName;
            var controllerName       = controllerDescriptor.ControllerName;
            // get area also
            var areaName = getAreaName(controllerDescriptor);

            // compose a name
            builder.Name  = T4Extensions.ComposeAutoRouteName(areaName, controllerName, actionName);
            builder.Order = Order;
            return(builder.Build());
        }