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

c# – AutoMapper – 如何使用ConstructedBy方法将参数传递到自

发布时间:2020-12-15 08:37:11 所属栏目:百科 来源:网络整理
导读:在我的ASP.NET MVC 2(RC)项目中 – 我使用AutoMapper在 Linq到Sql类(Media)和视图模型(MediaVM)之间进行映射.视图模型具有SelectList属性,用于视图中的下拉列表.我有一个自定义值解析器来填充数据库中的SelectList属性项,但我想知道是否有办法将源模型中的几
在我的ASP.NET MVC 2(RC)项目中 – 我使用AutoMapper在 Linq到Sql类(Media)和视图模型(MediaVM)之间进行映射.视图模型具有SelectList属性,用于视图中的下拉列表.我有一个自定义值解析器来填充数据库中的SelectList属性项,但我想知道是否有办法将源模型中的几个值传递给解析器(使用ConstructedBy方法?)来a)定义所选项目和b )过滤数据库中的项目.源对象被传递到自定义解析器 – 但解析器用于具有不同类型源对象的几个不同视图模型,因此宁愿定义从映射配置中获取值的位置.这是我的视图模型:
public class MediaVM
{
    public bool Active { get; set; }
    public string Name { get; set; }

    [UIHint("DropDownList")]
    [DisplayName("Users")]
    public SelectList slUsers { get; private set; }
}

automapper映射配置:

Mapper.CreateMap<Media,MediaVM>()
        .ForMember(dest => dest.slUsers,opt => opt.ResolveUsing<UsersSelectListResolver>());

能够在.ForMember映射子句上执行类似的操作会很高兴:

.ConstructedBy(src => new UsersSelectListResolver(src.UserID,src.FilterVal))

有没有办法实现这个目标?

解决方法

我发现你的帖子试图做同样的事情.我决定采用一种简单的方法,并尝试直接通过AutoMaper映射到我的选择列表.我只是将一个数组返回到我的ViewModel中,并为我的选择列表引用该对象.数组被映射,选择列表对象没有.简单,有效.并且,恕我直言各自正在做它的预期任务 – 映射器映射,ViewModel进行布局
View Model code:
        [DisplayName("Criterion Type")]
        public virtual CriterionType[] CriterionTypes { get; set; }

        [DisplayName("Criterion Type")]
        public SelectList CriterionTypeList
        {
            get
            {
                return new SelectList(CriterionTypes,"Id","Key");
            }
        }

我的映射器:

Mapper.CreateMap<Criterion,CriterionForm>()
            .ForMember(dest => dest.CriterionTypeList,opt => opt.Ignore());

(编辑:李大同)

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

    推荐文章
      热点阅读