0

我们有一个非常大的 HTML 表单(> 100 个字段),它使用用户输入的数据更新 SQL Server 数据库。用户填写表单需要很长时间,但他们提交的每一条信息对业务流程都非常有价值。即使用户放弃了表单,我们也希望保留他们输入的所有内容。

我们计划为每个字段附加一个 onblur 事件,并使用 jQuery/AJAX 将每条数据立即发送回应用程序服务器。那部分非常简单。我们的问题是何时以及如何最好地将这些应用程序级信息保存到数据库中。同样,我们的首要任务是数据保留而不是性能,但我们也希望尽可能高效地做到这一点。

我看到的选项是:

  1. 让 Web 服务立即将每条数据发布到数据库服务器。
  2. 将信息存储在应用服务器上的自定义类中,然后定期调用更新方法将新数据发布到数据库。
  3. 将信息存储在视图或会话状态中,然后运行例程将此信息发布到数据库服务器。
  4. 还有一些我们没有想到的。

选项 1 似乎是最明显的故障保护,但也是最耗费资源的。选项 2 似乎是最优雅的,但我们是否可以绝对确定如果不先运行其更新方法就不能销毁自定义类实例?

谢谢你的帮助!

4

2 回答 2

1

恕我直言,我真的会把表格分成几部分(如果可能的话)。由于这是 ASP.Net,如果您正在使用,请Web Forms查看使用wizards(将表单切割成逻辑Steps

您可以在没有表单向导的情况下执行相同的操作,但仍将流程拆分为客户端的逻辑步骤。您可能可以在纯 JavaScript 中执行此操作,但如果您使用框架(jQuery、Knockout 等)可能会更容易 - 概念保持不变,将表单输入过程分成多个部分(又名“步骤”) -例如,使用显示切换、每个“步骤”的 div 等。

  • “即使以后放弃也保留一切”:假设步骤是“分层的”,其中“最关键的”输入位于开头。这使得“步骤”方法更加重要 - 这是一个“逻辑组”(您真正想要的输入),所以如果您执行步骤方法,那么您可以将这些数据(这个“步骤”)保存到数据库中您认为合适的方式(例如 Ajax 或 ASP.Net Post/postback)。

嗯...

于 2013-06-05T13:49:32.790 回答
0

我会将所有内容打包在一些 xml 或数据集 (.getxml) 中,并将 xml 传递给存储过程....

如何将 XML 从 C# 传递到 SQL Server 2008 中的存储过程?

也许把调用放在后台线程上。

http://code.msdn.microsoft.com/CSASPNETBackgroundWorker-dda8d7b6

xml 将比逐行调用值 (RBAR) 更快。您可以只保存 xml,或将 xml 分解为关系表。

于 2013-06-05T17:15:04.500 回答