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

时间:2010-06-09 09:42:07

标签: asp.net-mvc architecture

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

        /// <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?让控制器从服务中提取数据,然后调用另一个函数来调用视图模型吗?

1 个答案:

答案 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]属性,它是一个自定义操作过滤器,用于检查传递给视图的模型并应用正确的转换,以便视图只包含视图模型。