在 Automapper 中修剪字符串

Kou*_*aha 3 asp.net-mvc orm datamapper automapper asp.net-mvc-5.1

Mapper.CreateMap<DataViewModel, DataSource>()
Run Code Online (Sandbox Code Playgroud)

我的源代码包含来自用户界面的字符串值。我想在将所有字符串映射到目标对象之前修剪所有字符串。无法为此找到解决方案。任何人都知道这是如何做到的

Jos*_*ard 8

这可以使用该ForMember方法完成,如下所示:

Mapper.CreateMap<DataViewModel, DataSource>()
.ForMember(x => x.YourString, opt => opt.MapFrom(y => y.YourString.Trim()));
Run Code Online (Sandbox Code Playgroud)

如果你想修剪多个属性,你可以.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()));
Run Code Online (Sandbox Code Playgroud)

虽然这可以完成工作,但我建议在应用程序的其他地方执行输入清理,因为它不属于映射。

  • 我想为源对象的所有成员而不是单个成员进行修剪。你能告诉我怎么做吗? (3认同)

Moh*_*yan 6

您还可以使用AddTransform

CreateMap<DataViewModel, DataSource>()
    .AddTransform<string>(s => string.IsNullOrWhiteSpace(s) ? "" : s.Trim());
Run Code Online (Sandbox Code Playgroud)