예제 #1
0
        protected override Task OnRouteMatched(RouteContext context)
        {
            //TODO: Need to handle when a slug matches more than one route.
            if (_websiteDataService.TryToGetPageNodeFromSlug(context.RouteData.Values[FriendlyUrlRouteDataValueKey], out Node pageNode))
            {
                var outgoingPath = pageNode.Path;
                var incomingPath = context.HttpContext.Request.Path;

                if (incomingPath.Equals(outgoingPath))
                {
                    context.RouteData.DataTokens[PageNodeRouteDataValueKey] = pageNode;
                    context.RouteData.Values[ControllerRouteDataValueKey]   = pageNode.Type;
                }
                else
                {
                    context.RouteData.Values[ControllerRouteDataValueKey]   = "Redirect";
                    context.RouteData.Values[RedirectPathRouteDataValueKey] = outgoingPath;
                }
            }
            else
            {
                context.RouteData.Values[ControllerRouteDataValueKey] = "NotFound";
            }

            context.RouteData.Values[ControllerActionRouteDataValueKey] = "Index";

            return(base.OnRouteMatched(context));
        }