如何在asp.net中保留以前的页面值

时间:2013-02-19 22:19:45

标签: asp.net

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

var memberData = PreviousPage.dependentData;

Page2有一个取消按钮。当用户发现某些dataentry错误并想要返回到Page1时,他们可以单击此按钮。 “取消”按钮单击事件在客户端运行以下代码:

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

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

由于

1 个答案:

答案 0 :(得分: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!
}

现在......有这种想法的警告你。例如,如果您在load balancer后面的多个服务器上运行此操作,则需要确保使用粘性会话,或者至少使用某种持久性Session Provider

我想我所说的是在将它打入你的app之前做一些功课:)