c# - 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 协议。有任何想法吗?
解决方案
一种选择是使用 javascript 添加带有表单字段的行(在表格中或隐藏),以便在提交表单时准备好它们。VM 将有一个列表或类似类型来显示返回的会话。
另一种选择是对每个加法和减法使用异步操作。
推荐阅读
- ios - 失败原因当我尝试在 iPhone 中运行时未找到代码签名
- javascript - 销毁会话后未从浏览器中删除 Express Session Cookie (connect.sid)
- scala - 如何从 build.gradle 文件调用 scala 方法
- scala - 使用不同的配置文件构建 Scala Play 应用程序
- javascript - 专注于记录交互式网格 oracle apex
- linux - yocto recipe 中的“inherit”关键字和“DEPENDS”关键字用法
- dart - 是否可以在 Dart 中使用条件导入和部分导入?
- python - 有没有办法从网站执行智能搜索?
- c# - OWIN 在 IIS Express 和 IIS 之间产生不同的行为
- angular - Angular 中的问题,输入时带有掩码和验证器