在MVC中进行CRUD操作时,我无法使用AutoMapper。我已经在网上搜索与此相关的内容,但无法找到与我想要做的事情有关的任何事情。也许有一些东西,但我无法理解AutoMapper的更高级功能。
基本上我想要做的是在MVC应用程序中的CREATE方法上使用AutoMapper。现在我可以完全正确地映射基本信息,但是当我需要包含另一个模型时,我完全迷失了。以下是我的例子。
这是我的AppDomainClasses中的模型
public class City
{
public City()
{
this.Name = string.Empty;
this.Cities = new List<City>();
}
public City(string cityName)
{
this.Name = cityName;
this.Cities = new List<City>();
}
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
public List<City> Cities { get; set; }
}
这是我的viewmodel,我试图自动化
public class CityForList
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
}
public class CityFull : CityForList
{
public CityFull()
{
Cities = new List<CityForList>();
}
public List<CityForList> Cities { get; set; }
}
所以基本上我创建了这个Map
Mapper.CreateMap<CityFull, City>();
然后我将CityFull对象传递给映射器
Mapper.Map<CityFull, City>(cf);
所以我正在做的是我在CityFull对象中传递Create方法,并且包含包含城市ID的项目的FormCollection。所以我需要做的就是映射Id,名称和被选中的城市并将它们映射。现在我可以毫无问题地映射Id和Name但我不知道如何将所选城市(来自列表框的表单集合)添加到AutoMapper中以将它们包含在映射中。
我提前感谢您提供任何帮助!
答案 0 :(得分:0)
您没有获得所选城市的原因是“选定”属性不属于“城市”类。
我建议你用AutoMapper创建另一个地图,将控制器映射到你将要创建的类(让我们称之为CityController),并让CityController与CityForList相关。
希望这有帮助。