考虑一个View V及其关联的导入的ViewModel VM。该视图用于财务单据提交过程,并且包含多个字段,并且viewmodel VM包含客户列表的属性,即List> Customer>,该属性在启动时从数据库加载并填充下拉列表。 V加载,用户从列表List> C>中选择一个客户C。立即,该表单被提交并保留C.Id,并被重定向到HttpGet ActionResult,该结果使用C.Id从数据库中填充了一个下拉列表,该下拉列表包含先前从该客户处订购的所有项目ID列表> I>。此列表存储在VM中。用户从此下拉列表中选择一项。立即,该表单将提交并保留I.Id,并重定向到HttpGet ActionResult,该结果使用C.Id和I.Id从数据库中检索与此项目I.Price关联的价格,并将其填写在V的文本框中
以上很容易。现在真的很难了。用户填写他们要提交财务报告的数量,在附近的文本框中写评论,然后按“添加项目”按钮,该按钮将重新加载该表单,以在HTML表格中显示该项目全部可见,而C.Id仍在其下拉列表中列出。公司希望在最终提交完成之前一次将多个项目添加到表单中。现在,当将更多项目添加到此列表时,我必须保留项目对象(携带5-6个字段)以及LIST> ITEM>。目标是,我可以将其提交到包含S.Id的表Submission,S中,该表将显示客户,地址信息,SubmissionId和其他几个字段,还将所有项目提交到相关的SubmissionItem表中包含相同的SubmissionId来跟踪提交。
我绝对不知道如何进行第二段。我认为这是不可能的。在桌面应用程序中,这只是小菜一碟,但是在网络上,我无法保留这些表格!我唯一的想法是删除所有数据注释,并且永远不要刷新RedirectToAction方法上的视图,但这不是PRG协议。有什么想法吗?
答案 0 :(得分:0)
一种选择是使用javascript添加带有表单字段的行(在表中或隐藏),以便在提交表单时就可以使用它们。 VM将具有列表或类似类型以显示返回的会话。
另一个选择是对每个加法和减法使用异步操作。