0

我正在创建 4 个 asp.net 页面。前三页有“继续”按钮,最后一页有“提交”按钮。我不允许使用 Sessions 来存储前三页数据。我需要在最后三页上使用“返回”按钮。当我单击“返回”按钮时,我需要维护用户输入的上一页数据。

由于我的页面进行了一些回发,我无法使用 javascript.history 函数。

我的限制是:

由于应用程序是从 Web 场提供的,因此不能使用会话对象。但是,出于本练习的目的,将会话对象视为类似数据库的持久空间,您可以在其中存储数据。您的代码应该显示一种切换到不同持久空间的简单方法。

什么是持久空间之类的数据库以及如何编写代码以切换到不同的持久空间?...

请给我一些关于如何进行的想法....

谢谢

4

4 回答 4

2

ASP.Net Wizard在您的情况下,控制可以是一种选择。因为所有NextPrevious导航都由控件本身管理,并且为每个Next PreviousFinish按钮定义了事件。控件状态将自动存储在Viewstate向导控件本身中并由其管理,您无需一次又一次地重新填充控件。

您可以在MSDN文章中找到更多详细信息或在此处查看示例

于 2012-06-09T13:58:36.017 回答
0

我可以提出两种解决方案。第一个为会话使用数据库持久存储,因为这解决了网络农场的反需求。这很容易做到,并且需要零代码,只需要配置(当然还有数据库)。唯一(在 99% 的情况下是微不足道的)警告是,您在会话中存储的任何内容都必须是 [Serializable]。这使得网络农场问题变得无关紧要,因为所有节点都将共享同一个数据库,这使得问题没有实际意义。在这里查看:http: //msdn.microsoft.com/en-us/library/ms972429.aspx

第二个是相当自定义的,使用一些隐藏字段或其他控件来存储信息(本质上是使用 Viewstate 来传输数据)和页面之间的交叉发布(

于 2012-06-09T14:00:38.810 回答
0

我为 Web 表单编写了一个导航项目,您会发现它很有趣,因为它采用了一种新方法来记住访问过的页面和输入的数据,http://navigation.codeplex.com/

我还在上个月的 MSDN 杂志上写了一篇介绍性文章, http: //msdn.microsoft.com/en-gb/magazine/hh975349.aspx

如果您有兴趣或需要任何帮助,请告诉我

于 2012-06-09T22:36:07.937 回答
0

您是否考虑过通过一些 Web 服务调用或其他方式将数据存储在数据库中?为什么不每次导航到新页面时都调用 Ajax 来存储和检索数据?

   $(document).ready(function () {
    $.ajax({
              type: "POST",
              url: "/Services/SomeServiceService.asmx/GetData",
              data: "{ 'myval' : 'someval'}",
              contentType: "application/json; charset=utf-8",
              dataType: "json",
              error: function (resp) { alert("ERROR\n" + resp.responseText); },
              success: function (data) {
             }
    });
    $(".next").click(function(event){
      $.ajax({
               type: "POST",
               url: "/Services/SomeServiceService.asmx/SaveData",
               data: "{ 'myval' : 'someval'}",
               contentType: "application/json; charset=utf-8",
               dataType: "json",
               error: function (resp) { alert("ERROR\n" + resp.responseText); },
               success: function (data) {
              }
     });
    });
  });
于 2012-06-09T14:08:50.367 回答