【发布时间】:2010-01-14 01:47:18
【问题描述】:
当模型属性的数据类型与我希望在表单中显示的数据类型大不相同时,我很难理解 MVC 的设计模式。我不确定逻辑应该去哪里。
意识到我不太确定如何提出这个问题,我想我会用一个具体的例子来解释它。
我有一张发票表,第二张表包含 InvoiceDetails。每个 InvoiceDetail 项目都有一个负责批准费用的所有者。给定的发票有一个或多个最终将在所有明细行上签字的人,以便可以批准发票。正在构建网站以提供审批功能。
在数据库中,我存储了批准行项目的人员的员工 ID。此架构为我提供了一个模型,该模型具有用于 Approved 列的 String 属性。
但是,我希望在网站上提供一个复选框,供员工单击以表明他们批准该行项目。
我想我的问题是——我该如何处理?传递给 View 的 Model 具有 String 属性,但传递回 Controller 的表单值将是 CheckBox 类型。我看到了两种可能的方式...
1) 创建一个新的模型对象来表示表单字段...比如 FormInvoiceDetails...让业务逻辑查询数据库,然后将结果转换为其他类型。然后在提交后,需要将表单值转换回来,以便更新原始模型对象。
2) 将原始 InvoiceDetails 集合传递给 View 并让代码在那里创建基于 String 属性的值呈现 CheckBox。我仍然不确定如何处理提交,因为我仍然需要将表单值映射回底层数据库对象。
如果不是这两种方法之一,也许还有第三种方法?
为了使情况更复杂(或者可能不是),我正在渲染表单以允许编辑多行(即集合)。
感谢任何人提供的任何见解。
【问题讨论】: