【发布时间】: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