是否可以使用重定向将数据保存到2个表中?没有Viewmodel

时间:2017-02-13 14:33:07

标签: asp.net-mvc ado.net entity-framework-4

我有一个问题,我不知道该怎么做。

我有两个表之间有一个关系(PK - FK),我想知道是否可以在第一个表中添加一个新行,然后将其重定向到第二个表,然后添加另一个新行,然后在两个表中保存数据?

我试过这样做,但它只是在第一个插入一个新行,第二个让我输入数据但是当我保存时,它不会保存在第二个

我为每张桌子设置了2个独立的控制器,但这真的是我想知道的,如果它可能以及如何。真的很感激一个基本的例子。请记住,我在编写这项技术时非常陌生。

谢谢,抱歉任何拼写错误!

1 个答案:

答案 0 :(得分:1)

你的问题很不清楚。您是在寻找一种方法来保存所有数据,还是只创建一个用户可以输入两组数据的工作流程?

要一次性保存数据,您有两个选择。第一个也是最好的选择是在一个表单中简单地包含两个实体的所有字段。控制器和特定实体之间不必存在1-1相关性。您可以在单个控制器操作中使用多个不同的实体。利用视图模型,您可以在一个视图中处理所有数据,然后将发布的信息映射到所有适当的实体并一次性保存。

第二个选项是创建“向导”或多步骤表单。由于每个请求都是幂等的,因此您只需以某种方式保留每个帖子的数据,通常为TempData。在最后一步中,您可以从TempData或您保留的其他任何地方检索以前发布的数据,最后保存所有实体。

如果你在谈论两个单独的保存步骤作为工作流程的一部分,那就更容易了。您只需遵循PRG(Post-Redirect-Get)模式,然后重定向链中的下一步。但是,这仅将用户指向定义的路径。它不会阻止用户破坏链并且无法完成后续步骤。