在最终提交之前显示表单数据(确认视图)

本文关键字:数据 确认 视图 表单 显示 提交 | 更新日期: 2023-09-27 18:31:20

我需要让用户有机会在提交数据之前查看他输入的内容并进行验证。当用户单击提交表单时,我想将显示表单中输入的所有数据到单独的页面中。 当用户单击该页面上的验证时,数据将返回到最终提交数据的控制器。

我认为主要问题是如何将所有表单数据从一个页面移动到另一个页面。

在最终提交之前显示表单数据(确认视图)

一种方法是创建一个新的控制器操作,例如"验证提交"。提交表单应发布到 YourController.VerifiySubmit()。"验证提交视图"显示数据,以便用户可以查看它,并将字段写出为隐藏的表单字段。此"验证"页面上有一个提交按钮,当用户单击它时,它会将隐藏的表单字段发布到您的最终"FormSubmit"控制器操作(无论您命名什么),它都会保存到数据库中。

编辑:另外,请更新您的问题的标题,以便它表明您正在问什么问题。

您想要的是将表单发布到控制器。 例如,如果使用Index页面进行提交,则控制器代码将如下所示

public ActionResult Index() 
{
    return View();
}
[HttpPost]
public ActionResult Verify(FormCollection form)
{
    ViewBag.FormItems = form;
    return View();
}
[HttpPost]
public ActionResult Accept(FormCollection form)
{
    // Do whatever you need to do to store the data
    return View();
}

现在,如果您的用户提交模型中的信息,您将希望实际使用该模型代替FormCollection,并将您的View设置为针对该模型进行强类型处理(将其作为强类型模型处理会容易得多)。

诚然,将ViewBag设置为仅存储FormCollection是一种懒惰的做事方式,但在不知道您真正想做什么的情况下,它会起作用。 正如我所说,对输入数据使用模型将简化事情并使其更加健壮。

输入数据确认最终提交页面之间传输数据的另一种方法是使用 TempData,它允许您在 2 个请求之间保存状态(通常在 SessionState 中)。