public void Validate(ControllerContext controllerContext, ModelValidationNode parentNode) { if (controllerContext == null) { throw new ArgumentNullException("controllerContext"); } if (SuppressValidation) { // no-op return; } // pre-validation steps ModelValidatingEventArgs validatingEventArgs = new ModelValidatingEventArgs(controllerContext, parentNode); OnValidating(validatingEventArgs); if (validatingEventArgs.Cancel) { return; } ValidateChildren(controllerContext); ValidateThis(controllerContext, parentNode); // post-validation steps ModelValidatedEventArgs validatedEventArgs = new ModelValidatedEventArgs(controllerContext, parentNode); OnValidated(validatedEventArgs); }
// Called when the property setter null check failed, allows us to add our own error message to ModelState. internal static EventHandler <ModelValidatedEventArgs> CreateNullCheckFailedHandler( ControllerContext controllerContext, ModelMetadata modelMetadata, object incomingValue ) { return((sender, e) => { ModelValidationNode validationNode = (ModelValidationNode)sender; ModelStateDictionary modelState = e.ControllerContext.Controller.ViewData.ModelState; if (modelState.IsValidField(validationNode.ModelStateKey)) { string errorMessage = ModelBinderConfig.ValueRequiredErrorMessageProvider( controllerContext, modelMetadata, incomingValue ); if (errorMessage != null) { modelState.AddModelError(validationNode.ModelStateKey, errorMessage); } } }); }
public ComplexModelDtoResult(object model, ModelValidationNode validationNode) { if (validationNode == null) { throw new ArgumentNullException("validationNode"); } Model = model; ValidationNode = validationNode; }
public ModelValidatingEventArgs(ControllerContext controllerContext, ModelValidationNode parentNode) { if (controllerContext == null) { throw new ArgumentNullException("controllerContext"); } ControllerContext = controllerContext; ParentNode = parentNode; }
public void CombineWith(ModelValidationNode otherNode) { if (otherNode != null && !otherNode.SuppressValidation) { Validated += otherNode.Validated; Validating += otherNode.Validating; foreach (ModelValidationNode childNode in otherNode.ChildNodes) { ChildNodes.Add(childNode); } } }
public ModelValidatedEventArgs(ControllerContext controllerContext, ModelValidationNode parentNode) { if (controllerContext == null) { throw new ArgumentNullException("controllerContext"); } ControllerContext = controllerContext; ParentNode = parentNode; }
private object TryConvertContainerToMetadataType(ModelValidationNode parentNode) { if (parentNode != null) { object containerInstance = parentNode.ModelMetadata.Model; if (containerInstance != null) { Type expectedContainerType = ModelMetadata.ContainerType; if (expectedContainerType != null) { if (expectedContainerType.IsInstanceOfType(containerInstance)) { return containerInstance; } } } } return null; }
private object TryConvertContainerToMetadataType(ModelValidationNode parentNode) { if (parentNode != null) { object containerInstance = parentNode.ModelMetadata.Model; if (containerInstance != null) { Type expectedContainerType = ModelMetadata.ContainerType; if (expectedContainerType != null) { if (expectedContainerType.IsInstanceOfType(containerInstance)) { return(containerInstance); } } } } return(null); }
private void ValidateThis(ControllerContext controllerContext, ModelValidationNode parentNode) { ModelStateDictionary modelState = controllerContext.Controller.ViewData.ModelState; if (!modelState.IsValidField(ModelStateKey)) { return; // short-circuit } object container = TryConvertContainerToMetadataType(parentNode); foreach (ModelValidator validator in ModelMetadata.GetValidators(controllerContext)) { foreach (ModelValidationResult validationResult in validator.Validate(container)) { string trueModelStateKey = ModelBinderUtil.CreatePropertyModelName(ModelStateKey, validationResult.MemberName); modelState.AddModelError(trueModelStateKey, validationResult.Message); } } }