/// <summary> /// Gets the route data. /// </summary> /// <param name="httpContextBase">The HTTP context base.</param> /// <returns></returns> public override RouteData GetRouteData(HttpContextBase httpContextBase) { if (httpContextBase.Request.CurrentExecutionFilePath.StartsWith("/dashboard", StringComparison.InvariantCultureIgnoreCase)) return null; var routeData = new RouteData(this, _routeHandler); foreach (var defaultPair in _innerRoute.Defaults) routeData.Values[defaultPair.Key] = defaultPair.Value; foreach (var tokenPair in _innerRoute.DataTokens) routeData.DataTokens[tokenPair.Key] = tokenPair.Value; // get the virtual path of the request var virtualPath = httpContextBase.Request.CurrentExecutionFilePath.TrimStart(new[] {'/'}); //var virtualPath = httpContextBase.Request.AppRelativeCurrentExecutionFilePath; // try to resolve the current item var pathData = _pathResolver.ResolvePath(virtualPath); // Abort and proceed to other routes in the route table if (pathData == null) { return null; } routeData.ApplyCurrentModel(pathData.Controller, pathData.Action, pathData.CurrentPageModel); return routeData; }
/// <summary> /// When overridden in a derived class, returns route information about the request. /// </summary> /// <param name="httpContext">An object that encapsulates information about the HTTP request.</param> /// <returns> /// An object that contains the values from the route definition if the route matches the current request, or null if the route does not match the request. /// </returns> public override RouteData GetRouteData(System.Web.HttpContextBase httpContext) { // get the virtual path of the request var virtualPath = httpContext.Request.CurrentExecutionFilePath; // abort if the virtual path does not contain dashboard if (!IsDashboardRoute(virtualPath)) { return null; } // try to resolve the current item var pathData = _pathResolver.ResolvePath(virtualPath.Replace("/dashboard/content", "").TrimStart(new[] {'/'})); var routeData = new RouteData(this, _routeHandler); foreach (var defaultPair in _innerRoute.Defaults) routeData.Values[defaultPair.Key] = defaultPair.Value; foreach (var tokenPair in _innerRoute.DataTokens) routeData.DataTokens[tokenPair.Key] = tokenPair.Value; // Abort and proceed to other routes in the route table if (pathData == null) { return null; } routeData.ApplyCurrentModel(pathData.Controller, pathData.Action, pathData.CurrentPageModel); return routeData; }
/// <summary> /// Gets the route data. /// </summary> /// <param name="httpContextBase">The HTTP context base.</param> /// <returns></returns> public override RouteData GetRouteData(HttpContextBase httpContextBase) { if (new Regex("^https?://" + SubDomain).IsMatch(httpContextBase.Request.Url.AbsoluteUri)) { return null; } var routeData = new RouteData(this, _routeHandler); // get the virtual path of the request var virtualPath = httpContextBase.Request.CurrentExecutionFilePath.TrimStart(new[] { '/' }); //var virtualPath = httpContextBase.Request.AppRelativeCurrentExecutionFilePath; // try to resolve the current item var pathData = this.PathResolver.ResolvePath(routeData, virtualPath); // Abort and proceed to other routes in the route table if (pathData == null) { return null; } routeData.ApplyCurrentModel(pathData.Controller, pathData.Action, pathData.CurrentPageModel); return routeData; }