Example #1
0
        public RegexRouteValidator(string parameter, string regex, RouteValidationAction passAction, RouteValidationAction failAction)
        {
            _parameter = parameter;

            _regex = new Regex("^" + regex + "$");

            _passAction = passAction;
            _failAction = failAction;
        }
Example #2
0
		public RegexRouteValidator(string parameter, string regex, RouteValidationAction passAction, RouteValidationAction failAction)
		{
			_parameter = parameter;

			_regex = new Regex("^" + regex + "$");

		    _passAction = passAction;
		    _failAction = failAction;
		}
Example #3
0
        internal RouteResult Resolve(string url)
        {
            Match m = _regex.Match(url);

            if (m.Success)
            {
                RouteResult result = new RouteResult(Controller, Action, _parameters);

                foreach (string groupName in _regexGroups)
                {
                    string value        = m.Groups[groupName].Value;
                    string searchString = "{" + groupName + "}";
                    bool   found        = false;

                    if (result.Controller.Contains(searchString))
                    {
                        result.Controller = result.Controller.Replace(searchString, value);
                        found             = true;
                    }

                    if (result.Action.Contains(searchString))
                    {
                        result.Action = result.Action.Replace(searchString, value);
                        found         = true;
                    }

                    if (_parameterNames != null)
                    {
                        foreach (string paramName in _parameterNames)
                        {
                            string paramValue = result.Parameters[paramName];

                            if (paramValue.Contains(searchString))
                            {
                                result.Parameters[paramName] = paramValue.Replace(searchString, value);
                                found = true;
                            }
                        }
                    }

                    if (!found)
                    {
                        result.Parameters[groupName] = value;
                    }

                    if (_validators != null)
                    {
                        foreach (IRouteValidator validator in _validators)
                        {
                            if (validator.ShouldValidate(groupName))
                            {
                                bool ok = validator.Validate(groupName, value);

                                RouteValidationAction actionToExecute = ok ? validator.PassAction : validator.FailAction;

                                switch (actionToExecute)
                                {
                                case RouteValidationAction.Skip:
                                    result.ValidationResult = RouteValidationResult.Skip;
                                    break;

                                case RouteValidationAction.Error:
                                    result.ValidationResult = RouteValidationResult.Fail;
                                    break;

                                case RouteValidationAction.Accept:
                                    result.ValidationResult = RouteValidationResult.Success;
                                    break;

                                case RouteValidationAction.None:
                                    continue;
                                }

                                return(result);
                            }
                        }
                    }
                }

                return(result);
            }

            return(null);
        }