我正在寻找地图'将DTO恢复到与导致错误的DTO属性相对应的viewmodel中的属性时出现错误PersonDto.PreferedName
会导致数据库错误,比如Cannot be null
,此属性将映射到viemodel PersonViewModel.Name
,我希望能够在视图的langiage中显示错误消息,例如"名称是必需的"。
有什么方法可以查询Mapper
或其他一些AutoMapper对象来查找哪个viewmodel属性PreferedName
映射到?
答案 0 :(得分:1)
根据评论,您可以使用[Required]
(System.ComponentModel.DataAnnotations.RequiredAttribute)注释您的视图模型,并检查您的控制器操作ModelState.IsValid
。
序列化ModelState.Values
的内容并返回到您的WPF前端将允许您以任何适合的方式显示任何验证错误。
答案 1 :(得分:0)
看起来您从ModelState获取错误但回答原始问题可以使用以下
using AutoMapper;
using System;
using System.Linq;
namespace ConsoleApplicationAutoMapper
{
class Program
{
static void Main(string[] args)
{
var config = new MapperConfiguration(cfg => cfg.CreateMap<Order, OrderDto>()
.ForMember(dest => dest.DtoMyProperty, x => x.MapFrom(y => y.MyProperty)
));
Order order = new Order() { MyProperty = 12 };
var typeMaps = config.CreateMapper()
.ConfigurationProvider
.GetAllTypeMaps()
.Where(t => t.SourceType == typeof(Order) && t.DestinationType == typeof(OrderDto))
.Single()
.GetPropertyMaps();
foreach (var map in typeMaps)
Console.WriteLine(map.SourceMember.Name + "->" + map.DestinationProperty.Name);
Console.ReadLine();
}
}
public class Order
{
public int MyProperty { get; set; }
}
public class OrderDto
{
public int DtoMyProperty { get; set; }
}
}