Beispiel #1
0
        /// <summary>
        /// Recupera o tipo do controller com base nos namespaces.
        /// </summary>
        /// <param name="route"></param>
        /// <param name="controllerName"></param>
        /// <param name="namespaces"></param>
        /// <returns></returns>
        private Type GetControllerTypeWithinNamespaces(System.Web.Routing.RouteBase route, string controllerName, HashSet <string> namespaces)
        {
            ControllerTypeCache.EnsureInitialized(BuildManager);
            ICollection <Type> matchingTypes = ControllerTypeCache.GetControllerTypes(controllerName, namespaces);

            switch (matchingTypes.Count)
            {
            case 0:
                return(null);

            case 1:
                return(matchingTypes.First());

            default:
                throw CreateAmbiguousControllerException(route, controllerName, matchingTypes);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Cria o erro de controller ambiguo.
        /// </summary>
        /// <param name="route"></param>
        /// <param name="controllerName"></param>
        /// <param name="matchingTypes"></param>
        /// <returns></returns>
        private static InvalidOperationException CreateAmbiguousControllerException(System.Web.Routing.RouteBase route, string controllerName, ICollection <Type> matchingTypes)
        {
            StringBuilder typeList = new StringBuilder();

            foreach (Type matchedType in matchingTypes)
            {
                typeList.AppendLine();
                typeList.Append(matchedType.FullName);
            }
            string errorText;
            var    castRoute = route as System.Web.Routing.Route;

            if (castRoute != null)
            {
                errorText = string.Format("Controller '{0}' ambiguous with route url '{1}': {2}", controllerName, castRoute.Url, typeList);
            }
            else
            {
                errorText = string.Format("Controller '{0}' ambiguous: {1}", controllerName, typeList);
            }
            return(new InvalidOperationException(errorText));
        }
Beispiel #3
0
        private RouteModel GetRouteModelForRoute(ITabContext context, MvcRouteBase routeBase, Dictionary <int, List <RouteBase.GetRouteData.Message> > routeMessages, Dictionary <int, Dictionary <int, List <RouteBase.ProcessConstraint.Message> > > constraintMessages)
        {
            var routeModel = new RouteModel();

            var routeMessage = SafeFirstOrDefault(routeMessages.GetValueOrDefault(routeBase.GetHashCode()));

            if (routeMessage != null)
            {
                routeModel.Duration = routeMessage.Duration;
                routeModel.IsMatch  = routeMessage.IsMatch;
            }

            var route = routeBase as MvcRoute;

            if (route != null)
            {
                routeModel.Area        = (route.DataTokens != null && route.DataTokens.ContainsKey("area")) ? route.DataTokens["area"].ToString() : null;
                routeModel.Url         = route.Url;
                routeModel.RouteData   = ProcessRouteData(route.Defaults, routeMessage);
                routeModel.Constraints = ProcessConstraints(context, route, constraintMessages);
                routeModel.DataTokens  = ProcessDataTokens(route.DataTokens);
            }
            else
            {
                routeModel.Url = routeModel.ToString();
            }

            var routeName = routeBase as IRouteNameMixin;

            if (routeName != null)
            {
                routeModel.Name = routeName.Name;
            }

            return(routeModel);
        }
Beispiel #4
0
 public VirtualPathData(System.Web.Routing.RouteBase route, string virtualPath)
 {
 }
Beispiel #5
0
 public RouteData(System.Web.Routing.RouteBase route, System.Web.Routing.IRouteHandler routeHandler)
 {
 }