Sto tentando di accedere al valore di un'altra proprietà dal metodo GetClientValidationRules
di un attributo di convalida personalizzato.Ottieni il valore di un'altra proprietà da ModelMetaData
Ecco il mio tentativo (sulla base di Darin's response su un'altra questione):
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;
}
Tuttavia, quando si cerca di impostare otherValue
, ottengo:
System.Reflection.TargetException: oggetto non lo fa abbinare il tipo di bersaglio.
come hai risolto questa cosa. Sto avendo lo stesso problema, qualche suggerimento? – TechnicalSmile
ciao per caso potresti risolvere questo problema per favore? Sto avendo lo stesso problema per favore? – duongthaiha