private static RouteValidationResult MustHaveActionSegment(Segment[] segments, RouteValueDictionary defaults, RouteValueDictionary constraints)
        {
            var hasController = segments.OfType <ParameterSegment>().Any(x => x.ParameterName == "action") ||
                                defaults.GetOrDefault <object>("action") != null;

            return(hasController
                ? RouteValidationResult.Successful()
                : RouteValidationResult.Failure("The route does not contain an '{action}' segment, and no default action was provided."));
        }
        private static RouteValidationResult MustHaveViewModelSegment(Segment[] segments, RouteValueDictionary defaults, RouteValueDictionary constraints)
        {
            var hasViewModel = segments.OfType <ParameterSegment>().Any(x => x.ParameterName == "viewModel") ||
                               defaults.GetOrDefault <object>("viewModel") != null;

            return(hasViewModel
                ? RouteValidationResult.Successful()
                : RouteValidationResult.Failure("The route does not contain a '{viewModel}' segment, and no default ViewModel type was provided."));
        }