protected virtual RouteData FindRoutesForNode(ISiteMapNode node, string originalPath, HttpContextBase httpContext) { var routes = mvcContextFactory.GetRoutes(); var originalRoutes = routes.GetRouteData(httpContext); var nodeUrl = node.Url; httpContext.RewritePath(nodeUrl, true); RouteData routeData = node.GetRouteData(httpContext); if (routeData != null) { foreach (var routeValue in node.RouteValues) { routeData.Values[routeValue.Key] = routeValue.Value; } if (originalRoutes != null && (!routeData.Route.Equals(originalRoutes.Route) || originalPath != nodeUrl || node.Area == String.Empty)) { routeData.DataTokens.Remove("area"); //routeData.DataTokens.Remove("Namespaces"); //routeData.Values.Remove("area"); } } return(routeData); }
protected virtual RouteData FindRoutesForNode(ISiteMapNode node, HttpContextBase httpContext) { RouteData routeData = null; // Create a Uri for the current node. If we have an absolute URL, // it will be used instead of the baseUri. var nodeUri = new Uri(httpContext.Request.Url, node.Url); // Create a TextWriter with null stream as a backing stream // which doesn't consume resources using (var nullWriter = new StreamWriter(Stream.Null)) { // Create a new HTTP context using the node's URL instead of the current one. var nodeHttpContext = this.mvcContextFactory.CreateHttpContext(node, nodeUri, nullWriter); // Find routes for the sitemap node's URL using the new HTTP context routeData = node.GetRouteData(nodeHttpContext); } return(routeData); }
protected virtual RouteData FindRoutesForNode(ISiteMapNode node, HttpContextBase httpContext) { RouteData routeData = null; // Create a Uri for the current node. If we have an absolute URL, // it will be used instead of the baseUri. var nodeUri = new Uri(httpContext.Request.Url, node.Url); // Create a TextWriter with null stream as a backing stream // which doesn't consume resources using (var nullWriter = new StreamWriter(Stream.Null)) { // Create a new HTTP context using the node's URL instead of the current one. var nodeHttpContext = this.mvcContextFactory.CreateHttpContext(node, nodeUri, nullWriter); // Find routes for the sitemap node's URL using the new HTTP context routeData = node.GetRouteData(nodeHttpContext); } return routeData; }
protected virtual RouteData FindRoutesForNode(ISiteMapNode node, string originalPath, HttpContextBase httpContext) { var routes = mvcContextFactory.GetRoutes(); var originalRoutes = routes.GetRouteData(httpContext); var nodeUrl = node.Url; httpContext.RewritePath(nodeUrl, true); RouteData routeData = node.GetRouteData(httpContext); if (routeData != null) { foreach (var routeValue in node.RouteValues) { routeData.Values[routeValue.Key] = routeValue.Value; } if (originalRoutes != null && (!routeData.Route.Equals(originalRoutes.Route) || originalPath != nodeUrl || node.Area == String.Empty)) { routeData.DataTokens.Remove("area"); //routeData.DataTokens.Remove("Namespaces"); //routeData.Values.Remove("area"); } } return routeData; }