【问题标题】:Is it possible to save data into 2 tables using redirect to? Without Viewmodel是否可以使用重定向将数据保存到 2 个表中?没有 Viewmodel
【发布时间】:2017-02-13 14:33:06
【问题描述】:

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

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

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

我为每个表设置了 2 个单独的控制器,但这正是我想知道的是否可行以及如何实现。一个基本的例子真的很感激。请记住,我在使用这项技术进行编程方面还很陌生。

谢谢您,对任何拼写错误感到抱歉!

【问题讨论】:

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


    【解决方案1】:

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

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

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

    如果您将两个单独的保存步骤作为工作流程的一部分进行讨论,那就更简单了。您只需遵循 PRG(Post-Redirect-Get)模式,只需将重定向作为链中的下一步。但是,这只会将用户引导到定义的路径。它不会阻止用户打破链条并无法完成后续步骤。

    【讨论】:

    • 你好克里斯。如果我的问题不清楚,我很抱歉,但我需要您刚刚指定的 PRG 模式。所以谢谢!我将搜索该模式的示例以更好地理解这一点,以便将其应用于我的应用程序。再次感谢你。干杯!
    • 克里斯,我问这个话题的另一个问题?我做到了,它可以工作,但是您能否向我发送有关如何获取最后插入的 ID (PK) 并在我重定向到另一个表的视图时显示它的参考?例如,我有值为 3 的 PK,当我重定向到另一个视图时,我想在 FK 的字段中显示这个值“3”?我搜索了一些东西,但我不太明白。例如这个链接:“stackoverflow.com/questions/5103792/…”但我不明白你如何显示它(FK值)。再次感谢您的所有帮助。
    • 当您进行重定向时,您应该包含该信息,例如return RedirectToAction("Foo", new { id = 3 });.
    • 感谢您的重播克里斯,我这样做了:' db.tbl_NIR.Add(nir); db.SaveChanges(); var ni = db.tbl_NIR.OrderByDescending(x => x.ID).FirstOrDefault().ID; return RedirectToAction("AddIO", new { id = ni }); ' 在 HttpPost 方法中,但它没有显示该值,我知道这是我在视图中没有做的事情,这是我在视图中的编辑器:“@Html.EditorFor(model => model.NirID , 新的 { htmlAttributes = new { @class= "form-control" } })"。我认为这是问题所在,所以如果您能给我任何建议,我将不胜感激。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    相关资源
    最近更新 更多