标题几乎解释了这一切,它是我努力工作到项目的最后一件事。我们使用服务库构建,其中包含类似的功能。
/// <summary>
/// Returns a single category based on the specified ID.
/// </summary>
public Category GetCategory(int CategoryID)
{
var RetVal = _session.Single<Category>(x => x.ID == CategoryID);
return RetVal;
}
现在,Category是一个实体(我们正在使用实体框架),我们需要将其转换为CategoryViewModel。
现在,人们将如何构建这个?你会确保服务函数返回一个CategoryViewModel?让控制器从服务中提取数据,然后调用另一个函数来调用视图模型吗?
答案 0 :(得分:3)
以下是我写的blog post的摘录:
[AutoMap(typeof(IEnumerable<User>), typeof(IEnumerable<UserViewModel>))]
public ActionResult Index()
{
// return all users
IEnumerable<User> users = Repository.GetUsers();
return View(users);
}
在这种情况下,相应的视图强烈输入IEnumerable<UserViewModel>
。它使用AutoMapper来定义实体和视图模型之间的转换规则。对于[AutoMap]
属性,它是一个自定义操作过滤器,用于检查传递给视图的模型并应用正确的转换,以便视图只包含视图模型。