我只是工作這一點我自己,有一個很好的解決方案。這很可能是您的兩個視圖實際上在您的系統中以某種方式相關(特別是如果您使用的是實體框架)。檢查你的模型,你應該看到顯示關係的東西,如果你沒有,那麼只需添加它。 (該virtual
)
你的模型
public class Dto1
{
public int id { get; set; }
public string Property2 { get; set; }
public string Property3 { get; set; }
public string Property4 { get; set; }
public string Property5 { get; set; }
public virtual Dto2 dto2{ get; set; }
}
public class Dto2
{
public int id { get; set; }
public string PropertyB { get; set; }
public string PropertyC { get; set; }
public string PropertyD { get; set; }
public string PropertyE { get; set; }
}
你的ViewModels
public class Dto1ViewModel
{
public string Property1 { get; set; }
public string Property2 { get; set; }
public virtual Dto2VMForDto1 dto2{ get; set; }
}
//Special ViewModel just for sliding into the above
public class Dto2VMForDto1
{
public int id { get; set; }
public string PropertyB { get; set; }
public string PropertyC { get; set; }
}
Automapper看起來是這樣的:
cfg.CreateMap< Dto1, Dto1ViewModel>();
cfg.CreateMap< Dto2, Dto2VMForDto1 >();
我假設你正在使用LINQ讓你的數據:
Dto1ViewModel thePageVM = (from entry in context.Dto1 where...).ProjectTo<Dto1ViewModel>();
中提琴,一切都會奏效。在您看來,只需通過使用model.dto2.PropertyB
您可以通過ValueInjecter http://valueinjecter.codeplex.com/documentation – Omu 2010-05-05 18:28:06