在MVC5中使用AutoMapper和CRUD操作

时间:2014-08-03 21:21:20

标签: c# asp.net-mvc automapper

在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中以将它们包含在映射中。

我提前感谢您提供任何帮助!

1 个答案:

答案 0 :(得分:0)

您没有获得所选城市的原因是“选定”属性不属于“城市”类。

我建议你用AutoMapper创建另一个地图,将控制器映射到你将要创建的类(让我们称之为CityController),并让CityController与CityForList相关。

希望这有帮助。