【问题标题】:Automapper - Dictionary to Object Mapping not working?Automapper - 字典到对象映射不起作用?
【发布时间】:2017-09-15 08:05:24
【问题描述】:

我正在尝试将字典转换为对象。我尝试了以下方法,但它不起作用:

public class FormField 
{
   public string FieldName { get; set;}
   public string FieldValue { get; set;}
}

var formData = new List<FormField>
{
    new FormField {FieldName = "date", FieldValue = "2017-09-14"},
    new FormField {FieldName = "name", FieldValue = "Job blogs"},
    new FormField {FieldName = "isenabled", FieldValue = "true"}
};

public class MyViewModel 
{
  [Required]
  public DateTime Date { get; set; } = DateTime.now;

  [Required]
  public string Name { get; set; }

  public boolean IsEnabled { get; set; }

  public IEnumerable<SelectListItem> Titles 
  {
    get
    {
        var options = new List<SelectListItem>
        {
            new SelectListItem(){ Value = "Mr", Text = "Mr" },
            new SelectListItem(){ Value = "Mrs", Text = "Mrs" }                    
        };
        return options;
    }
  } 
} 

全球.asax:

protected void Application_Start()
{
    Mapper.Initialize(cfg => {});
}

代码

var viewModel = Mapper.Map<MyViewModel>(formData.ToDictionary(x => x.FieldName, x => (object) x.FieldValue))

请注意,我使用的是 automapper 5.0.2。

【问题讨论】:

  • 你遇到了什么错误?
  • @Jan_V 无错误 - viewModel 为空,即未设置任何值。
  • 如果我按照给定的方式更改您的代码,以便它实际编译这在 .NET 4.5、Automapper 5.0.2 控制台应用程序中可以正常工作...
  • 我也工作过 .net4.5 AutoMapper 5.0.2。模型已归档
  • 好的,看起来问题是区分大小写的。字典名称都是小写,对象属性是 Pascal 大小写。如何强制自动映射器忽略大小写?

标签: c# .net dictionary automapper


【解决方案1】:

它适用于我最新的。升级:)

【讨论】:

  • 而且我什至不确定版本是否负责。我敢打赌你甚至没有执行这个确切的代码。因为它不编译:) 所以运行你发布的代码,而不是其他的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-08
  • 1970-01-01
相关资源
最近更新 更多