我正在尝试在MVC 2中创建一个时间表应用程序,但我觉得我仍在努力掌握模型/视图关系以及所有这些。
我遇到的问题是,我想让用户在创建视图中报告新的时间段。但我想让模型中的项目,任务和顾问填充下拉列表。
基本上数据库结构如下所示:
(table) TimeSegments
TimeSegmentID
Hours
Date
ConsultantID (FK)
TaskID (FK)
ProjectID (FK)
(table) Projects
ProjectID
ProjectName
(table) Tasks
TaskID
TaskName
(table) Consultants
ConsultantID
ConsultantName
这个设计将来可能会扩展,现在我希望在进一步复杂化之前让基本功能正常工作。
现在,我将整个模型传递给创建视图(实际上是一个基于它的视图模型,只是为了简化一些编码,但它可能也是整个模型)。
问题是,通常当我使用创建视图完成类似的操作时,我会在控制器中创建一个新对象并将其传递给视图。在这种情况下,它将是TimeSegment对象,因为它是应在数据库中创建的新时间段。然后我可以提交它并更新控制器中的数据库。但是,如果我只将新的TimeSegment对象传递给视图,则无法使用项目,任务和顾问填充下拉列表。
相反,如果我只传递整个模型,我如何将文本框绑定到要在数据库中更新的新TimeSegment?
我觉得我需要发送一个新的TimeSegment对象和整个模型来执行此操作,但后来我不知道如何访问它(从视图中只能访问一个“模型”)。此外,在提交后返回控制器,控制器将如何知道要更新的内容?
我确信我仍然对MVC的思维方式感到非常困惑,但如果有人能够为我澄清这一点并告诉我(尽可能教学)如何解决这个问题,我真的很感激。
答案 0 :(得分:3)