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

时间:2012-04-17 15:43:19

标签: c# jquery asp.net-mvc asp.net-mvc-3

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

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

3 个答案:

答案 0 :(得分:2)

一种方法是创建一个新的控制器动作,例如“VerifySubmission”。提交表单应发布到YourController.VerifiySubmission()。 View for VerifySubmission显示数据,以便用户可以查看它,并将字段写为隐藏表单字段。在这个“验证”页面上有一个提交按钮,当用户点击它时,它将隐藏的表单字段POST到最终的“FormSubmit”控制器操作(无论你命名它是什么),它将被保存到数据库中。

编辑:此外,请更新您的问题的标题,以便它能说明您提出的问题。

答案 1 :(得分:0)

您想要的是将表单发布到控制器。例如,如果您使用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是一种懒惰的做事方式,但在不了解您真正想做的事情的情况下,它可行。正如我所说,使用输入数据模型可以简化事情并使其更加健壮。

答案 2 :(得分:0)

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