【发布时间】:2015-01-23 19:42:09
【问题描述】:
Mapper.CreateMap<DataViewModel, DataSource>()
My Source Here 包含来自用户界面的字符串值。我想在将其映射到目标对象之前修剪所有字符串。找不到解决方案。任何人都知道这是怎么做的
【问题讨论】:
标签: asp.net-mvc orm automapper datamapper asp.net-mvc-5.1
Mapper.CreateMap<DataViewModel, DataSource>()
My Source Here 包含来自用户界面的字符串值。我想在将其映射到目标对象之前修剪所有字符串。找不到解决方案。任何人都知道这是怎么做的
【问题讨论】:
标签: asp.net-mvc orm automapper datamapper asp.net-mvc-5.1
这可以使用ForMember 方法完成,如下所示:
Mapper.CreateMap<DataViewModel, DataSource>()
.ForMember(x => x.YourString, opt => opt.MapFrom(y => y.YourString.Trim()));
如果你想修剪多个属性,你可以像这样链接.ForMember() 方法:
Mapper.CreateMap<DataViewModel, DataSource>()
.ForMember(x => x.YourString, opt => opt.MapFrom(y => y.YourString.Trim()))
.ForMember(x => x.YourString1, opt => opt.MapFrom(y => y.YourString1.Trim()))
.ForMember(x => x.YourString2, opt => opt.MapFrom(y => y.YourString2.Trim()));
虽然这可以完成工作,但我建议您在应用程序的其他地方执行输入清理,因为它不属于映射。
【讨论】:
你也可以使用AddTransform
CreateMap<DataViewModel, DataSource>()
.AddTransform<string>(s => string.IsNullOrWhiteSpace(s) ? "" : s.Trim());
【讨论】: