我在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页)中的值。
由于
答案 0 :(得分:2)
您必须将这些值保存在某处,以便两个页面都可以访问它们。大多数情况下,这是在数据库中完成的,但如果您愿意,也可以使用Session,Cache,甚至是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之前做一些功课:)