I figured out this solution:
public static class ModelStateExtensions
{
/// <summary>
///
/// </summary>
/// <typeparam name="Tin">ViewModel Type</typeparam>
/// <typeparam name="Tout">Domain ModelType</typeparam>
/// <param name="modelstate">controllers modelstate</param>
/// <param name="results">Results of validation</param>
public static void AddValidationResult<Tin, Tout>(this ModelStateDictionary modelstate, ValidationResults results)
where Tout : class
where Tin : class
{
var map = AutoMapper.Mapper.FindTypeMapFor<Tout, Tin>();
var properties = map.GetPropertyMaps();
string destinationPropertyName=string.Empty;
foreach (var result in results)
{
var property = properties.FirstOrDefault(pm => pm.SourceMember!=null && pm.SourceMember.Name.Equals(result.Key));
if (property!=null)
{
destinationPropertyName=property.DestinationProperty.Name;
}
else
{
destinationPropertyName=string.Empty;
}
modelstate.AddModelError(destinationPropertyName, result.Message);
}
}
}
I added an extension method that based on the AutoMapper mappings I find the property to which the error message must be attached. I hope this will cover all aspects. I welcome any other suggestion!