2011-10-12 72 views
1

我在我的MVC应用程序中创建ViewModels。我们使用域模型的automapper来查看模型转换。我的问题是,当我在MVC中做Ajax的时候,我总是收到循环引用的错误(好像是JavaScriptSerializer导致的问题),所以我不需要返回项目列表,而只需要计数(因为这就是我的所有视图模型需求)。以下是层次结构的示例。预先感谢您的任何建议!自动映射器列表为int(数)

public class ProjectViewModel 
{ 
    public int ProjectID { get; set; } 
    [Required] 
    [UIHint("Project Name")] 
    public string Name { get; set; } 
    public ICollection<ProjectGroupViewModel> ProjectGroups { get; set; } 
} 

public class ProjectGroupViewModel 
{ 
    public int ProjectGroupID { get; set; } 

    [Required] 
    public string Name { get; set; } 
    //THIS is what I Want to have as int ProjectCount 
    public ICollection<ProjectViewModel> Projects { get; set; } 
} 

回答

7
public class ProjectGroupViewModel 
{ 
    public int ProjectGroupID { get; set; } 

    [Required] 
    public string Name { get; set; } 
    //THIS is what I Want to have as int ProjectCount 
    public int ProjectsCount { get; set; } 
} 

AutoMapper.Mapper.CreateMap<ProjectGroup, ProjectGroupViewModel>() 
    .ForMember(x => x.ProjectsCount, o => o.MapFrom(x => x.Projects.Count())) 
+0

LLLLLLike手套!谢谢! :) – spaceagestereo

+5

你不需要明确地映射属性,automapper解释属性名称并自动映射Projects.Count()到ProjectsCount – pomber