kur*_*asa 5 c# asp.net asp.net-mvc
我想知道将我检索到的域对象列表转换为控制器中的自定义ViewModel的最佳方法
例如
IList<Balls> _balls = _ballsService.GetBalls(searchCriteria);
Run Code Online (Sandbox Code Playgroud)
成
IList<BallViewModels> _balls = _ballsService.GetBalls(searchCriteria);
Run Code Online (Sandbox Code Playgroud)
它不必像我上面概述的那样,即它不必是IList,如果不是直接访问服务,而是通过一些其他层将对象转换为viewmodels,那也没关系.
谢谢
对于简单的对象,您可以使用Linq:
IList<BallViewModel> _balls = _ballsService.GetBalls(searchCriteria)
.Select(b => new BallsViewModel
{
ID = b.ID,
Name = b.Name,
// etc
})
.ToList();
Run Code Online (Sandbox Code Playgroud)
但是,这可能会非常重复,因此您可能希望为BallViewModel类提供一个接受Ball的构造函数,并为您完成工作.
另一种方法是使用类似AutoMapper的库将属性(甚至是嵌套的属性)从域对象复制到视图模型.