ASP.Net MVC你从哪里实体转换为ViewModels?

Lia*_*amB 5 architecture asp.net-mvc

标题几乎解释了这一切,它是我努力工作到项目的最后一件事.我们使用服务库构建,其中包含类似的功能.

        /// <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;
        }
Run Code Online (Sandbox Code Playgroud)

现在Category是一个实体(我们正在使用实体框架),我们需要将其转换为CategoryViewModel.

现在,人们将如何构建这个?你会确保服务函数返回一个CategoryViewModel?让控制器从服务中提取数据,然后调用另一个函数来调用视图模型?

Dar*_*rov 3

这是我写的博客文章的摘录:

[AutoMap(typeof(IEnumerable<User>), typeof(IEnumerable<UserViewModel>))]
public ActionResult Index()
{
    // return all users
    IEnumerable<User> users = Repository.GetUsers();
    return View(users);
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,相应的视图被强类型化为IEnumerable<UserViewModel>。它使用AutoMapper来定义实体和视图模型之间的转换规则。至于[AutoMap]属性,它是一个自定义操作过滤器,它检查传递给视图的模型并应用适当的转换,以便视图只有视图模型。