2011-07-30 13 views
12

Kaynak ve hedef eşleştirildikten sonra AutoMapper yöntemini çağırmak mümkün mü?AutoMapper, bir ViewModel eşleştirildikten sonra bir yöntemi nasıl çağırır?

 public ActionResult Index() 
    { 
     var category = db.Category.Where(y => y.parrent_id == null).ToList(); 

     Mapper.CreateMap<Category, ShowCategoriesViewModel>(). 
      ForMember(dest => dest.SubCategories, opt => opt.MapFrom(origin => origin.Category1)); 

     List<ShowCategoriesViewModel> scvm = Mapper.Map<List<Category>, List<ShowCategoriesViewModel>>(category); 

     foreach (ShowCategoriesViewModel model in scvm) 
     { 
      model.Sort(); 
     } 

     return View(scvm); 
    } 

ben sırala() yöntemini çağırmak AutoMapper olmasını isterler, yerine bir foreach döngüsü yapıyor olurdu:

Benim ViewModel şuna benzer:

public class ShowCategoriesViewModel 
{ 
    public int category_id { get; set; } 
    public string category_name { get; set; } 

    public List<MvcApplication3.Models.Category> SubCategories { get; set; } 

    public void Sort() 
    { 
     SubCategories.Sort(new CompareCategory()); 
    } 

} 

Ve Denetleyici şöyle görünür . Mümkün mü?

cevap

18

Burada

Mapper.CreateMap<Category, ShowCategoriesViewModel>() 
    .ForMember(dest => dest.SubCategories, opt => opt.MapFrom(origin => origin.Category1)) 
    .AfterMap((c,s) => s.Sort()); 
.AfterMap kullanabilirsiniz düşünüyorum