2

我在 asp.net 网络表单中工作。我在一个表单中收集用户输入,比如 Page1,其中包含几个服务器控件,例如文本框、组合框和单选按钮。当用户单击保存按钮时,将显示一个新页面,例如 Page2,其中显示所有输入的值以供验证。Page2 在 Page1 的按钮点击事件中通过 Server.Transfer("~/Page2") 方法显示。在 Page2 中,用户输入的值是通过读取 PreviousPage 属性获得的,如下所示:

var memberData = PreviousPage.dependentData;

Page2 有一个取消按钮。当用户发现一些数据输入错误并想返回 Page1 时,他们可以点击这个按钮。取消按钮单击事件在客户端运行以下代码:

if (confirm('Are you sure to leave this page?')) {
                window.history.back(1);
            }

问题是,当达到 Page1 时,所有用户输入的值都消失了。请让我知道如何构建这两个页面,以便保留上一页 (Page1) 中的值。

谢谢

4

1 回答 1

2

您必须将这些值保存在某处,以便两个页面都可以访问它们。大多数情况下,这是在数据库中完成的,但如果需要,您也可以使用SessionCache甚至是Cookie

由于这是特定于用户的,我怀疑 Session 是您最好的选择。创建一个简单的数据结构来匹配您的数据并将其保存到会话中:

public class UserData{
   public String Name {get; set;}
   public Int32 Age {get; set;}
}

然后当用户提交页面时:

var userData = new UserData();
userData.Name = //Get from form;
userData.Age = //Get from form;

HttpContext.Current.Session["UserData"] = userData;

然后在加载其他页面时:

var userData = HttpContext.Current.Session["UserData"] as UserData;

if(userData != null){
   //Do some stuff!
}

现在...有一些注意事项请注意。例如,如果您在负载均衡器后面的多个服务器上运行它,那么您需要确保您使用的是粘性会话,或者至少是某种持久会话提供者

我想我要说的是在将其添加到您的应用程序之前做一些功课:)

于 2013-02-19T22:26:16.023 回答