加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 有关视图模型和模型更新的一些子集的最佳实践

发布时间:2020-12-15 23:10:58 所属栏目:asp.Net 来源:网络整理
导读:通过选择MVC来开发我们的新网站,我发现自己处于在我周围正在开发的“最佳实践”中.两周前,NerdDinner是我的指导,但随着MVC 2的发展,甚至似乎已经过时了.这是一个令人兴奋的经历,我感到有幸与日常智能程序员保持密切联系. 现在我偶然发现了一个问题,我似乎无
通过选择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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读