通过选择MVC开发我们的新网站,我发现自己处于围绕着我开发的“最佳实践”中,并且显然是实时的。两周前,NerdDinner是我的向导,但随着MVC 2的发展,即使它看起来已经过时了。这是一个令人兴奋的体验,我很荣幸能够每天与智能程序员保持密切联系。有关视图模型和模型更新的最佳实践与子领域
现在我已经偶然发现了一个问题,我似乎无法得到直接的答案 - 无论如何从所有博客 - 我想从社区获得一些见解。这是关于编辑(阅读:编辑动作)。大部分材料,教程和博客都涉及创建和查看模型。因此,虽然这个问题可能不会提出一个问题,但我希望能够进行一些讨论,为我决定我将采取的发展道路做出贡献。
我的模型代表一个用户,有几个字段,如姓名,地址和电子邮件。所有的名字,实际上都是名字,姓氏和中间名。 “详细信息”视图显示所有这些字段,但您一次只能更改一组字段,例如您的姓名。用户扩展一个表单,而其他字段在上面和下面仍然可见。因此,返回的表单包含表示模型的字段的子集。
虽然这对我们和我们的布局来说很有吸引力,但出于各种原因,它会被严重的MVC开发人员所忽视。我一直在阅读一些模式和最佳实践,看起来这不是关于viewmodel == view的范例。还是我错了?
无论如何,NerdDinner支配使用FormCollection和UpdateModel。所有的空字段被愉快地忽略。从那以后,MVC社区放弃了这种方法,以至于没有发现MVC 2中的bug。如果没有您的表单收集中的完整模型,UpdateModel不起作用。
的view model pattern接收最赞的似乎是包含自定义视图模型实体,是我的设计问题可以进行兼容只有一个专用视图模型。它需要一个单调乏味的映射,尽管使用Jimmy Bogard的AutoMapper和ideas可以减轻这种影响,但这可能有价值,也可能不值得。他还提出了视图与视图模型之间的1:1关系。
为了与这些设计范例保持一致,我将为每个扩展字段集创建视图和相关视图。视图模型将各自几乎相同,仅在只读字段中不同,视图也包含很多重复标记。这对我来说似乎是荒谬的。将来,我可能希望能够同时显示两个,更多或全部字段集。
我会专心阅读我希望引发的讨论。提前谢谢了。
“细节视图显示所有这些字段,但您一次只能更改一组字段,例如您的姓名。 “为什么?为什么这会比让用户一次调整整个表单更友好?” – jfar 2010-01-17 20:54:01
你说得对,我会换个话题,它不那么混乱,而且更紧凑,你可以有多个地址,添加,删除,但我们仍然 – Martin 2010-01-17 22:47:46
你已经很好地解释了你的问题了,我一直有同样的问题,并且已经转向了由Jimmy Bogard描述的1:1 View:ViewModel模式,我仍然面临的主要问题是映射ViewModels中有多个域模型 – WDuffy 2010-05-30 20:05:14