通过选择 MVC 来开发我们的新站点,我发现自己处于明显实时的“最佳实践”之中。两周前,NerdDinner 是我的向导,但随着 MVC 2 的发展,即使它似乎已经过时了。这是一次激动人心的经历,我很荣幸能每天与聪明的程序员密切接触。
现在我偶然发现了一个我似乎无法直接回答的问题 - 无论如何来自所有博客 - 我想从社区中获得一些见解。这是关于编辑(阅读:编辑操作)。那里的大部分材料、教程和博客都涉及创建和查看模型。因此,虽然这个问题可能无法说明问题,但我希望能够进行一些讨论,为我决定我要走的发展道路做出贡献。
我的模型代表一个具有多个字段(如姓名、地址和电子邮件)的用户。事实上,所有的名字都在字段上,分别是名字、姓氏和中间名。详细信息视图显示所有这些字段,但您一次只能更改一组字段,例如您的姓名。用户展开一个表单,而其他字段仍然在上方和下方可见。因此,回发的表单包含代表模型的字段子集。
虽然这对我们和我们的布局问题很有吸引力,但由于各种原因,严重的 MVC 开发人员应该回避它。我一直在阅读一些模式和最佳实践,这似乎与 viewmodel == view 的范式不相符。还是我弄错了?
无论如何,NerdDinner 规定使用 FormCollection och UpdateModel。所有空字段都被愉快地忽略了。从那时起,MVC 社区已经放弃了这种方法,以至于没有发现 MVC 2 中的错误。如果您的 formcollection 中没有完整的模型,UpdateModel 将无法工作。
获得最多赞誉的视图模型模式似乎是包含自定义视图模型实体的专用视图模型,并且是唯一可以与我的设计问题兼容的视图模型。它需要大量的映射,尽管使用AutoMapper和 Jimmy Bogard 的想法有所减轻,这可能值得,也可能不值得。他还提出了视图和视图模型之间的 1:1 关系。
为了与这些设计范例保持一致,我将为我不断扩展的每个字段集创建一个视图和关联视图。每个视图模型几乎相同,只是在只读字段上有所不同,视图还包含许多重复的标记。这对我来说似乎很荒谬。将来我可能希望能够显示同时打开的两个、更多或所有字段集。
我会仔细阅读我希望引发的讨论。提前谢谢了。