加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 我在哪里可以初始化Orchard模块中的AutoMapper映

发布时间:2020-12-16 04:30:47 所属栏目:asp.Net 来源:网络整理
导读:我正忙着开发我的第一个非示例Orchard模块.它是一些控制器和视图,具有自定义(EF)数据访问,并且在很大程度上独立于Orchard内容类型和部件.通常我在Application_Start处理程序中设置映射,但由于此MVC模块中的操作将在Orchard应用程序的上下文中调用,因此我不再
我正忙着开发我的第一个非示例Orchard模块.它是一些控制器和视图,具有自定义(EF)数据访问,并且在很大程度上独立于Orchard内容类型和部件.通常我在Application_Start处理程序中设置映射,但由于此MVC模块中的操作将在Orchard应用程序的上下文中调用,因此我不再具有该入口点.我最明显和最直接的解决方案是将映射初始化移动到映射视图模型的静态构造函数,例如
public class ApplicantPersonalDetailsModel : MappedViewModel<Applicant>
{
    static ApplicantPersonalDetailsModel()
    {
        Mapper.CreateMap<Applicant,ApplicantPersonalDetailsModel>().Bidirectional();
    }
    ....
}

我怎么能这样做?有没有更好的方法在MVC3 / 4中执行此操作,或者最好是,我可以在Orchard应用程序中获取的事件或钩子也可以在应用程序启动时实现此目的?

解决方法

我这样做的方法是实现IOrchardShellEvents
public class MenuOrchardShellEvents : IOrchardShellEvents
    {
        public void Activated()
        {
            Mapper.CreateMap<YSRB.Menu.Models.Records.Customer,YSRB.Menu.Models.ViewModels.CustomerViewModel>()
                .ForMember(c => c.CustomerType,m => m.MapFrom(
                        x => (CustomerTypes)x.CustomerType
                    )
                );
            Mapper.CreateMap<YSRB.Menu.Models.ViewModels.CustomerViewModel,YSRB.Menu.Models.Records.Customer>()
                .ForMember(c => c.CustomerType,m => m.MapFrom(
                        x => (int)x.CustomerType
                    )
                );
        }

        public void Terminating()
        {
            //Do nothing
        }
    }

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读