【问题标题】:Display form data before final submission (confirmation view) [closed]在最终提交之前显示表单数据(确认视图)[关闭]
【发布时间】:2012-04-28 23:33:41
【问题描述】:

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

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

【问题讨论】:

  • 您的具体问题是什么?你试过什么?
  • 将其存储在数据库/会话/cookie 中以供以后检索。您使用哪一种取决于您需要保留数据多长时间以及您需要什么级别的安全性。
  • 这篇文章的标题很糟糕。 “如何解决这个问题”并没有告诉我们太多任何事情。请具体说明您的问题的主题。
  • 我已更改标题并从问题中删除了一些单词,因为它本身听起来很有用。 IE。几乎每个商业网站都会在最终“花光”点击之前显示“请验证您的信用卡信息”视图。
  • 我的,你的问题是不需要去服务器?也许需要一些额外的验证?现在,如果您不需要去服务器,这可以在您实际提交数据之前通过客户端使用一些 JavaScript 来实现。让我知道这是否适合你。我可以发布一些代码

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


【解决方案1】:

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

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

【讨论】:

  • 我对此感到好奇,是否有一种简单或自动的方法可以将所有值写入隐藏字段?如果视图模型是可序列化的,我想您可以将整个事物序列化为“验证”视图中的隐藏字段,但我从未尝试过。想知道是否有更好的标准方法。
【解决方案2】:

您想要的是将表单发布到控制器。例如,如果您使用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,并将您的 Views 设置为针对该模型进行强类型化(它'作为强类型模型处理起来会容易得多)。

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2018-03-27
      • 2014-09-22
      • 2018-02-11
      • 1970-01-01
      • 2015-03-11
      • 1970-01-01
      • 2020-09-06
      • 2011-09-23
      • 2013-09-22
      相关资源
      最近更新 更多