示例#1
0
        public override void AddRoutesTo(RouteCollection routeCollection)
        {
            _resourcesMapper.SetResourceAs(MappedName ?? ResourceName);

            var routes = new List <Route>();

            if (Collections != null && Collections.Any())
            {
                foreach (var member in Collections)
                {
                    routes.Add(_resourcesMapper.CollectionRoute(member.Key, member.Value));
                }
            }

            if (IncludesAction(names.IndexName))
            {
                routes.Add(_resourcesMapper.IndexRoute());
            }

            if (IncludesAction(names.CreateName))
            {
                routes.Add(_resourcesMapper.CreateRoute());
            }

            if (IncludesAction(names.NewName))
            {
                routes.Add(_resourcesMapper.NewRoute());
            }

            if (IncludesAction(names.EditName))
            {
                routes.Add(_resourcesMapper.EditRoute());
            }

            if (IncludesAction(names.ShowName))
            {
                routes.Add(_resourcesMapper.ShowRoute());
            }

            if (IncludesAction(names.UpdateName))
            {
                routes.Add(_resourcesMapper.UpdateRoute());
            }

            if (IncludesAction(names.DestroyName))
            {
                routes.Add(_resourcesMapper.DestroyRoute());
            }

            if (Members != null && Members.Any())
            {
                foreach (var member in Members)
                {
                    routes.Add(_resourcesMapper.MemberRoute(member.Key, member.Value));
                }
            }

            foreach (var route in routes)
            {
                ConfigureRoute(route);
                routeCollection.Add(route);
            }

            var newConstraints = Context.Constraints;

            if (newConstraints.ContainsKey("id"))
            {
                var idConstraint = newConstraints.FirstOrDefault(x => x.Key == "id");

                newConstraints.Remove("id");

                newConstraints[RouteSet.Singularize(_resourcesMapper.ResourceName) + "Id"] = idConstraint.Value;
            }

            foreach (var mapping in Mappings)
            {
                mapping.Context.Constraints = newConstraints;

                mapping.AddRoutesTo(routeCollection);
            }
        }