asp.net-mvc-3 – 使用IEnumerable在域模型和视图模型之间进行映
发布时间:2020-12-16 09:47:55 所属栏目:asp.Net 来源:网络整理
导读:所以我的域模型有一个名为Children的属性,它返回所有具有当前对象ID的菜单.我想创建一个视图模型,并在控制器中映射它们之间的值.所以Children属性是IEnumerable MenuModel和menu.Children的类型为IEnumerable MenuCache.最简单的方法是什么?我是否需要旋转
所以我的域模型有一个名为Children的属性,它返回所有具有当前对象ID的菜单.我想创建一个视图模型,并在控制器中映射它们之间的值.所以Children属性是IEnumerable< MenuModel>和menu.Children的类型为IEnumerable< MenuCache>.最简单的方法是什么?我是否需要旋转所有孩子并将其手动添加到当前模型中并重复所有级别?
模型: public class MenuModel { public int ID { get; set; } public string URL { get; set; } public int ParentID { get; set; } public IEnumerable<MenuModel> Children { get; set; } } 控制器: using (var context = ww.WebObjs.WebDataContext.Get()) { var menu = context.MenuCaches.Where(x=> x.ID == 0).FirstOrDefault(); model = new MenuModel() { ID = menu.ID,URL = menu.Text,ParentID = menu.ParentID,Children = menu.Children // how do I get those children? }; } 解决方法
您可以使用LINQ:
using (var context = ww.WebObjs.WebDataContext.Get()) { var menu = context.MenuCaches.Where(x => x.ID == 0).FirstOrDefault(); model = new MenuModel() { ID = menu.ID,Children = menu.Children.Select(x => new MenuModel { Prop1 = x.Prop1,Prop2 = x.Prop2,// and so on ... }) }; } 或者我强烈推荐的AutoMapper.因此,在定义相应的映射之后,您的控制器操作变得更具可读性: using (var context = ww.WebObjs.WebDataContext.Get()) { var menu = context.MenuCaches.Where(x => x.ID == 0).FirstOrDefault(); model = Mapper.Map<MenuCache,MenuModel>(menu); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- iis – NewRelic如何通过简单地安装.Net代理来工作?
- asp.net – 如何在客户端上为CustomValidator控件重写Error
- 如何使用ASP.NET C#将Excel数据导入SQL Server,其中表的数据
- asp.net-mvc – 在MVC Web应用程序中设置默认值
- asp.net – 如何使用客户端函数“OnClientClicking”传递bi
- asp.net-mvc – 接受逗号和点作为小数分隔符
- asp.net-mvc-3 – Azure服务总线 – 双向通信性能挑战
- asp.net – mod_mono asp MVC4错误:System.Security.Secur
- asp.net-mvc – 自定义HtmlHelper扩展方法在View中不可用?
- asp.net – 存储应用程序变量