protected virtual void AddModelError(IHasModelStateService serviceIntance, ModelValidationResult temp) { serviceIntance.ModelState.Errors.Add(new ModelError { MemberName = temp.MemberName, Message = temp.Message, }); }
public object BeforeCall(string operationName, object[] inputs) { // validate parameters before call var serviceIntance = OperationContext.Current.InstanceContext.GetServiceInstance() as IHasModelStateService; if (serviceIntance != null) { if (serviceIntance.ModelState == null) { serviceIntance.ModelState = new ModelState(); } serviceIntance.ModelState.Errors = new List <ModelError>(); IEnumerable <ModelValidationResult> validationResults = new ModelValidationResult[] { }; foreach (object input in inputs) { if (input != null) { ModelMetadata metadata = ModelMetadataProviders.Current.GetMetadataForType(() => input, input.GetType()); validationResults = ModelValidator.GetModelValidator(metadata).Validate(null); foreach (ModelValidationResult validationResult in validationResults) { var temp = validationResult; if (ThrowErrorOnFirstError) { throw new FaultException <ValidationFault>(new ValidationFault(new[] { temp }), "Validation error"); } AddModelError(serviceIntance, temp); } } } if (ThrowErrorAfterValidation && !serviceIntance.ModelState.IsValid) { throw new FaultException <ValidationFault>(new ValidationFault(validationResults), "Validation error"); } } return(null); }
public object BeforeCall(string operationName, object[] inputs) { // validate parameters before call var serviceIntance = OperationContext.Current.InstanceContext.GetServiceInstance() as IHasModelStateService; if (serviceIntance != null) { if (serviceIntance.ModelState == null) { serviceIntance.ModelState = new ModelState(); } serviceIntance.ModelState.Errors = new List<ModelError>(); IEnumerable<ModelValidationResult> validationResults = new ModelValidationResult[] { }; foreach (object input in inputs) { if (input != null) { ModelMetadata metadata = ModelMetadataProviders.Current.GetMetadataForType(() => input, input.GetType()); validationResults = ModelValidator.GetModelValidator(metadata).Validate(null); foreach (ModelValidationResult validationResult in validationResults) { var temp = validationResult; if (ThrowErrorOnFirstError) { throw new FaultException<ValidationFault>(new ValidationFault(new[] { temp }), "Validation error"); } AddModelError(serviceIntance, temp); } } } if (ThrowErrorAfterValidation && !serviceIntance.ModelState.IsValid) { throw new FaultException<ValidationFault>(new ValidationFault(validationResults), "Validation error"); } } return null; }