Estoy tratando de obtener el valor de otra propiedad desde el método GetClientValidationRules
de un atributo de validación personalizado.Obtener el valor de otra propiedad de ModelMetaData
Aquí está mi intento (basado en Darin's response en otra pregunta):
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;
}
Sin embargo, al intentar establecer otherValue
, me sale:
System.Reflection.TargetException: Objeto no lo hace coincide con el tipo de objetivo.
cómo se resolvió esto. Estoy teniendo el mismo problema, ¿alguna sugerencia? – TechnicalSmile
hola por casualidad usted resuelve este problema por favor? Estoy teniendo el mismo problema, por favor? – duongthaiha