asp.net-mvc – 哪里可以将商业模式转换成模型?
|
在我的ASP.NET MVC应用程序中,我正在使用工作单元和存储库模式进行数据访问. 使用工作类单元和在其中定义的存储库,我在控制器中获取相关的实体集.凭借我的初学者知识,我可以想到两种获取业务模型的方法,并将其转换为查看模型. > Repository将业务模型返回给控制器,该模型比映射到查看模型,或者 目前我正在使用第一种方法,但是我的控制器代码对于具有很多属性的视图模型开始看起来很丑陋. 另一方面,我想,由于我的存储库被称为UserRepository(例如),它应该直接返回业务模型,而不是仅对单个视图有用的某些模型. 你认为哪一个更适合大型项目?有办法吗? 谢谢. 解决方法存储库应返回域模型,而不是查看模型.就模型和视图模型之间的映射而言,我个人使用 AutoMapper,所以我有一个单独的映射层,但这个层是从控制器调用的.以下是典型的GET控制器操作可能如下所示: public ActionResult Foo(int id)
{
// the controller queries the repository to retrieve a domain model
Bar domainModel = Repository.Get(id);
// The controller converts the domain model to a view model
// In this example I use AutoMapper,so the controller actually delegates
// this mapping to AutoMapper but if you don't have a separate mapping layer
// you could do the mapping here as well.
BarViewModel viewModel = Mapper.Map<Bar,BarViewModel>(domainModel);
// The controller passes a view model to the view
return View(viewModel);
}
当然可以用自定义的动作过滤器来缩短,以避免重复的映射逻辑: [AutoMap(typeof(Bar),typeof(BarViewModel))]
public ActionResult Foo(int id)
{
Bar domainModel = Repository.Get(id);
return View(domainModel);
}
AutoMap自定义操作过滤器预订了OnActionExecuted事件,拦截传递给视图结果的模型,调用映射图层(AutoMapper在我的情况下)将其转换为视图模型并将其替换为视图.视图当然是强烈类型的视图模型. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – JSP相当于ASP.NET MVC的部分视图?
- asp.net-mvc – 加载测试SignalR集线器应用程序的最佳方法是
- asp.net-core – ClaimTypes的ASP.NET要求
- asp.net-mvc – 如何在ASP.NET Web API中获取IpAddress和Us
- 在将所有websocket数据发送到客户端之前,ASP.NET关闭连接
- asp.net-mvc-4 – 后退点击刷新页面 – MVC 4
- asp.net-mvc-3 – asp.net mvc 3中的自定义错误页面
- asp.net – 第一个事件?主页Page_Load或内容页Page_Load
- 如何使用asp.net将.docx转换为html?
- 在IIS / ASP.NET MVC 4中未加载非托管依赖项的64位托管程序
- asp.net – 如何在抛出请求验证异常时显示自定义
- asp.net-ajax – UpdateProgress链接到多个Updat
- asp.net-mvc-3 – ASP.NET MVC 3认证/授权
- ASP.NET MVC 5和Bootstrap 3
- asp.net-mvc-3 – 使用EditorFor/TextBoxFor/Tex
- ASP.NET MVC – 使用模型中的布尔值禁用Html帮助
- 如何在asp.net的页面加载中调用javascript函数
- ASP.NET 5 HTML5历史
- asp.net – web部署工具2.1和web部署3.5有什么区
- asp.net-mvc – asp.net mvc通用控制器
