Asp.net core mvc 映射两个相同的模型,使用automapper嵌套

Asp.net core mvc 映射两个相同的模型,使用automapper嵌套,asp.net-core-mvc,mapping,automapper,asp.net-core-3.0,Asp.net Core Mvc,Mapping,Automapper,Asp.net Core 3.0,我做了一些研究,但找不到我想要的东西 我有无尽的菜单。我有一个MenuDTO和一个MenuViewModel,用于此菜单。我在模型和DTO之间的匹配没有问题,但在将DTO映射到ViewModel时遇到了问题。显然我找不到解决办法,你能帮忙吗 我的菜单对象 public class MenuDto : BaseDto { public string Name { get; set; } public string Icon { get; set; }

我做了一些研究,但找不到我想要的东西

我有无尽的菜单。我有一个MenuDTO和一个MenuViewModel,用于此菜单。我在模型和DTO之间的匹配没有问题,但在将DTO映射到ViewModel时遇到了问题。显然我找不到解决办法,你能帮忙吗

我的菜单对象

    public class MenuDto : BaseDto
    {
        public string Name { get; set; }
        public string Icon { get; set; }
        public string Order { get; set; }
        public string Url { get; set; }
        public bool IsVisible { get; set; }
        public int ParentId { get; set; }
        public MenuDto ParentMenu { get; set; }
        public List<MenuDto> Menus { get; set; }
    }


错误消息暗示-AutoMapper无法在
MenuDto
MenuViewModel
之间映射,或者无法定位已定义的映射

我已经测试了你的映射,它们都很好。所以,剩下的可能性是AutoMapper无法定位您的映射

我假设您在评论部分提到的
业务层
UI层
是两个独立的项目。由于
WebProfile
是在
UI层中定义的,因此您必须告诉AutoMapper它应该搜索该程序集以查找映射。由于您在模型和DTO之间的映射工作正常,我可以猜您已经对
业务层中定义的
业务概要文件
执行了相同的操作

我不知道您现有的代码,但您可以这样做-在
启动中。Configure
方法添加/修改以下行-

services.AddAutoMapper(typeof(IDtoMapping)、typeof(IViewModelMapping));

其中,
IDtoMapping
IViewModelMapping
分别是在
业务层
UI层
中声明的两个标记接口(空接口,仅用于标识声明它们的程序集)。

BaseDto中有什么?BaseDto有Id、DateCreated、DateModified字段,我是活动的。我看不出映射有任何问题。请在这里纠正输入错误-
\u mapper.Map抱歉,尽管该行有-
\u mapper.Map(\u menuService.GetNavMenus());但我一直收到相同的错误
您是否选中了
\u menuService.getnavmenumes()
?是否正在返回
列表
?很抱歉响应太晚,我用与您提到的类似的方法解决了问题。谢谢你的支持。
    public class MenuViewModel
    {
        public int Id { get; set; }        
        public bool IsActive { get; set; }
        public string Name { get; set; }
        public string Icon { get; set; }
        public string Order { get; set; }
        public string Url { get; set; }
        public bool IsVisible { get; set; }
        public int ParentId { get; set; }
        public MenuViewModel ParentMenu { get; set; }
        public List<MenuViewModel> Menus { get; set; }
    }

    public class WebProfile : Profile
    {
        public WebProfile()
        {
            CreateMap<MenuDto, MenuViewModel>();
            CreateMap<MenuViewModel, MenuDto>();
        }
    }
var navMenuItems = _mapper.Map<List<MenuViewModel>(_menuService.GetNavMenus());

AutoMapperMappingException: Missing type map configuration or unsupported mapping.

Mapping types:
MenuDto -> MenuViewModel
BiPortal2020.Business.ServiceDTOs.Menu.MenuDto -> BiPortal2020.WebUI.Areas.Admin.Models.Menu.MenuViewModel
lambda_method(Closure , MenuDto , MenuViewModel , ResolutionContext )

AutoMapperMappingException: Error mapping types.

Mapping types:
Object -> List`1
System.Object -> System.Collections.Generic.List`1