I am trying to get a different property value from the GetClientValidationRules method of a special validation attribute.
Here is my attempt (based on Darin's answer on another question):
public IEnumerable<ModelClientValidationRule> GetClientValidationRules( ModelMetadata metadata, ControllerContext context) { var parentType = metadata.ContainerType; var parentMetaData = ModelMetadataProviders.Current .GetMetadataForType(null, parentType); var parentMetaData = ModelMetadataProviders.Current .GetMetadataForProperties(context.Controller.ViewData.Model, parentType); var otherProperty = parentMetaData.FirstOrDefault(p => p.PropertyName == "SomeProperty"); var otherValue = otherProperty.Model; var rule = new ModelClientValidationRule { ValidationType = "customvalidatorattribute", ErrorMessage = this.FormatErrorMessage(metadata.GetDisplayName()), }; yield return rule; }
However, when I try to set otherValue I get:
System.Reflection.TargetException: The object does not match the type of target.
source share