public virtual ModelStateDictionary ValidateRequest() { var controllerContext = _actionExecutionContext.ControllerContext; var actionDescriptor = _actionExecutionContext.ActionDescriptor; _parameters = new Dictionary <string, object>(StringComparer.OrdinalIgnoreCase); var modelState = controllerContext.Controller.ViewData.ModelState; foreach (ParameterDescriptor parameterDescriptor in actionDescriptor.GetParameters()) { var parameterName = parameterDescriptor.ParameterName; var parameterType = parameterDescriptor.ParameterType; var value = GetParameterValue(controllerContext, parameterDescriptor); _parameters[parameterName] = value; if (value == null) { continue; } var validationResults = _mvcApplication.ValidateModel(parameterType, value, controllerContext); Func <ModelValidationResult, bool> isValidField = res => modelState.IsValidField(String.Format("{0}.{1}", parameterName, res.MemberName)); foreach (var validationResult in validationResults.Where(isValidField).ToArray()) { var subPropertyName = String.Format("{0}.{1}", parameterName, validationResult.MemberName); modelState.AddModelError(subPropertyName, validationResult.Message); } } return(modelState); }