Вы должны написать собственные классы ModelMetadataProvider и ModelValidatorProvider
public class DynamicModelValidatorProvider : ModelValidatorProvider
{
public override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, ControllerContext context)
{
// you validation logic go there
yield break;
}
}
public class DynamicModelMetadataProvider : ModelMetadataProvider
{
public override IEnumerable<ModelMetadata> GetMetadataForProperties(object container, Type containerType)
{
yield return new ModelMetadata(this, containerType, null, typeof (string), "Hello");
yield return new ModelMetadata(this, containerType, null, typeof (string), "World");
}
public override ModelMetadata GetMetadataForProperty(Func<object> modelAccessor, Type containerType, string propertyName)
{
return GetMetadataForProperties(null, containerType).SingleOrDefault(x => x.PropertyName == propertyName);
}
public override ModelMetadata GetMetadataForType(Func<object> modelAccessor, Type modelType)
{
return new ModelMetadata(this, null, modelAccessor, modelType, null);
}
}