如何使用AutoMapper将IEnumerable<T>属性映射到ViewModel中

4

我正在尝试遵循Jimmy Bogard的自动映射建议(在大多数情况下都非常有效)。但是如果我有一个自定义的视图模型,其中包含一个我想要映射的集合属性呢?例如,

public class WidgetSearchViewModel
{
    public WidgetSearchOptionsViewModel Options { get; set; }
    public GenericListPagerViewModel Pager { get; set; }
    public IEnumerable<WidgetSearchResultModel> Results { get; set; }
}

Results属性来自存储库,是域实体的IEnumerable,我想使用automapper将其转换为WidgetSearchResultModel实例。问题在于,我需要在控制器中构建WidgetSearchViewModel以填充Options和Pager属性。如何使用AutoMapper ActionFilter在OnActionExecuted中填充Results属性?这是否可能,还是我需要在控制器中放置一个Mapper.Map调用,并在单元测试中引导所有映射?

1个回答

2

1
此外,单元测试可以调用Mapper.AssertConfigurationIsValid();这将测试您的配置是否有效。 - CRice
谢谢你们两个。不过我在想,如果没有与我的问题中的WidgetSearchViewModel类示例相当的领域/实体等效项,我该如何编写控制器代码呢?控制器需要填充Options和Pager属性,但没有实体等效项。我需要创建一个匹配的DTO类,其中有一个IEnumerable<WidgetSearchResultDomainEntity> Results属性,并在控制器中填充它,然后让Automapper进行转换吗?还是像这样的情况最好将映射留在控制器中?你会怎么做? - danludwig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接