首页 > 解决方案 > ASP.NET MVC 5 中的级联模型 - 需要架构建议

问题描述

考虑一个 View V 及其关联的导入 ViewModel VM。此视图用于财务文档提交过程并包含多个字段,并且 viewmodel VM 包含客户列表的属性 List>Customer>,该属性在启动时从数据库加载并填充下拉列表。V 加载,用户从列表 List>C> 中选择客户 C。立即,表单提交持久 C.Id 并被重定向到 HttpGet ActionResult,该操作使用 C.Id 填充数据库中的下拉列表,其中包含先前从该客户订购的所有 Item Ids List>I>。此列表存储在 VM 中。用户从这个下拉列表中选择一个项目 I。立即,表单提交持久 I.Id 并被重定向到使用 C.Id 和 I.Id 检索与此项目关联的价格的 HttpGet ActionResult,I.Price,

以上很简单。现在是真正变得困难的地方。用户填写他们想要提交财务报告的数量,在附近的文本框中写下评论,然后按下“添加项目”按钮,然后重新加载表单,在表单上的 HTML 表中显示项目全部都可以看到,而 C.Id 仍列在其下拉列表中。该公司希望在最终提交完成之前一次将多个项目添加到表单中。现在,我必须保留一个 Item OBJECT(带有 5-6 个字段)以及一个 LIST>ITEM>,同时将更多项目添加到此列表中。目标是,我可以将它提交到一个包含 S.Id 的表格 Submission, S,它将显示客户、地址信息、SubmissionId 和其他几个字段,

我完全不知道如何进行第二段。我不认为这是可能的。在桌面应用程序中,这是小菜一碟,但在网络上,我无法让表单持久存在!我唯一的想法是删除所有数据注释并且永远不要刷新 RedirectToAction 方法的视图,但这不是 PRG 协议。有任何想法吗?

标签: c#asp.net-mvcmodel-view-controller

解决方案


一种选择是使用 javascript 添加带有表单字段的行(在表格中或隐藏),以便在提交表单时准备好它们。VM 将有一个列表或类似类型来显示返回的会话。

另一种选择是对每个加法和减法使用异步操作。


推荐阅读