예제 #1
0
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            foreach (var parameter in actionContext.ActionDescriptor.GetParameters())
            {
                object parameterValue;
                if (!parameter.IsOptional &&
                    parameter.ParameterType.IsClass &&
                    actionContext.ActionArguments.TryGetValue(parameter.ParameterName, out parameterValue))
                {
                    if (parameterValue == null)
                    {
                        AddNullModelError(parameter, actionContext.ModelState);
                    }
                    else
                    {
                        var validators = _validatorFactory.GetValidators(parameter.ParameterType);

                        foreach (var validator in validators)
                        {
                            Validate(validator, parameterValue, actionContext.ModelState);
                        }
                    }
                }
            }
        }