示例#1
0
        public override VirtualPathData GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
        {
            object subfolderValue;

            if (values == null || !values.TryGetValue("subfolder", out subfolderValue))
            {
                requestContext.RouteData.Values.TryGetValue("subfolder", out subfolderValue);
            }

            var subfolder = subfolderValue as string;

            if (!String.IsNullOrEmpty(subfolder))
            {
                VirtualPathData vpd = SubfolderAppRootRoute.GetVirtualPath(requestContext,
                                                                           new RouteValueDictionary(new { subfolder }));
                vpd.Route = this;
                return(vpd);
            }

            if (values == null || values.Count == 0)
            {
                return(new VirtualPathData(this, string.Empty));
            }
            return(null);
        }
示例#2
0
        public override RouteData GetRouteData(HttpContextBase httpContext)
        {
            string appExecutionPath = httpContext.Request.AppRelativeCurrentExecutionFilePath;

            if (appExecutionPath == "~/" ||
                String.Equals(appExecutionPath, "~/default.aspx", StringComparison.OrdinalIgnoreCase))
            {
                var appRootRouteData = new RouteData
                {
                    Route        = this,
                    RouteHandler = GetHandler(),
                };
                if (!BlogAggregationEnabled)
                {
                    appRootRouteData.DataTokens.Add(PageRoute.ControlNamesKey, new[] { "homepage" }.AsEnumerable());
                }
                return(appRootRouteData);
            }

            var blogRequest = httpContext.Items[BlogRequest.BlogRequestKey] as BlogRequest;

            if (blogRequest == null || String.IsNullOrEmpty(blogRequest.Subfolder))
            {
                return(null);
            }

            RouteData routeData = SubfolderAppRootRoute.GetRouteData(httpContext) ??
                                  SubfolderDefaultRoute.GetRouteData(httpContext);

            if (routeData != null)
            {
                routeData.Route = this;
                if (!String.Equals(blogRequest.Subfolder, routeData.GetSubfolder(), StringComparison.OrdinalIgnoreCase))
                {
                    return(null);
                }
            }
            return(routeData);
        }