asp.net – 有关视图模型和模型更新的一些子集的最佳实践
通过选择MVC来开发我们的新网站,我发现自己处于在我周围正在开发的“最佳实践”中.两周前,NerdDinner是我的指导,但随着MVC 2的发展,甚至似乎已经过时了.这是一个令人兴奋的经历,我感到有幸与日常智能程序员保持密切联系.
现在我偶然发现了一个问题,我似乎无法得到一个直接的答案 – 从所有的博客 – 而且我想从社区获得一些洞察力.这是关于编辑(阅读:编辑操作).大量的材料,教程和博客,处理创建和查看模型.所以虽然这个问题可能并不是一个问题,但我希望能够进行一些讨论,有助于我决定我要采取的发展道路. 我的模型代表具有几个字段(如姓名,地址和电子邮件)的用户.所有的名字,其实在字段上每个都有名字,姓氏和中间名. “详细信息”视图显示所有这些字段,但您一次只能更改一组字段,例如您的名称.用户展开表单,而其他字段在上下仍然可见.因此,回发的表单包含表示模型的字段的一个子集. 虽然这对我们和布局的关注感兴趣,但由于各种原因,这将被严重的MVC开发人员所忽视.我一直在阅读一些模式和最佳实践,似乎这与viewmodel == view的范例并不重要.还是我错了? 无论如何,NerdDinner规定使用FormCollection och UpdateModel.所有的空字段都被高兴地忽略.从那时起,MVC社区已经放弃了这种方式,使得没有发现MVC 2中的bug.如果您的formcollection中没有完整的模型,UpdateModel将无法正常工作. view model pattern获得最多的赞誉似乎是专用视图模型,其中包含一个自定义视图模型实体,是唯一一个可以与我的设计问题兼容的视图模型实体.尽管使用了AutoMapper和Jimmy Bogard的ideas,这可能或可能不值得,但它需要繁琐的测绘数据.他还提出了观点和观点模式之间的1:1关系. 为了符合这些设计范例,我将为每个扩展的字段创建一个视图和关联视图.视图模型各自几乎相同,仅在只读的字段中不同,视图也包含很多重复的标记.这对我来说似乎是荒唐的.将来我可能希望能够同时显示两个或多个字段. 我最会仔细阅读我希望引发的讨论.提前谢谢了. 解决方法
我这样做(这个映射是在modelBuilder中自动完成的,用于
ValueInjecter):
我有一个示例asp.net-mvc应用程序,我在mvc中演示了最佳做法,您可以在download of the valueinjecter public ActionResult Edit(long id) { return View(modelBuilder.BuildModel(personService.Get(id))); } [HttpPost] public ActionResult Edit(PersonViewModel model) { if (!ModelState.IsValid) return View(modelBuilder.RebuildModel(model)); personService.Save(modelBuilder.BuildEntity(model)); return RedirectToAction("Index"); } ValueInjecter的快速演示: //build viewmodel personViewModel.InjectFrom(person) .InjectFrom<CountryToLookup>(person); //build entity person.InjectFrom(personViewModel) .InjectFrom<LookupToCountry>(personViewModel); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 实现数据库对象的版本控制
- ASP.NET MVC下Ajax.BeginForm方式无刷新提交表单实例
- asp.net-mvc – MVC ELMAH和SQL Azure
- ASP.NET Core中的OWASP Top 10 十大风险-失效的访问控制与S
- asp.net – 防止意外双击按钮
- ASP.NET中的c# – die()或exit()功能
- asp.net – 无法找到请求的.Net Framework数据提供程序.它可
- asp.net – 在Web API Formatter中设置Expires / Caching标
- [WCF 4.0新特性] 默认绑定和行为配置
- asp.net-web-api – WebAPI 2.2不支持substringof函数