我要实现密码重置功能。第一个用户在表单中输入电子邮件。然后点击提交。在服务器端,我检查电子邮件是否正确以及用户是否存在于数据库中,如果是,那么我将重定向到下一页(实际上它是与questry字符串参数相同的页面?step = 2)。
由于loadBalancer,我无法使用会话。保持用户邮件的最佳方式是什么?
感谢您的帮助
答案 0 :(得分:1)
如果它是同一页面,那么它应该是相当微不足道的。您可以添加隐藏的输入字段并将其附加到表单中,以便在按钮单击处理程序中
protected void Button1_Click(object sender, EventArgs e)
{
string email = email.Text;
//Check database etc
HtmlInputHidden hidden = new HtmlInputHidden();
hidden.Value = email;
hidden.ID = "hiddenemail";
form1.Controls.Add(hidden); // Where form1 is the ID of a form with runat=server
}
或者更好的事件,如果现有的服务器控件说你可以使用的标签:
protected void Button1_Click(object sender, EventArgs e)
{
string email = email.Text;
//Check database etc
Label1.Text = email; // Where Label1 is the ID of a ASP:Label on your page
}
答案 1 :(得分:1)
如果您不想使用Postback(无论出于何种原因)并且无法使用Session,我看到的唯一解决方案是将电子邮件包含在查询字符串中。
Response.Redirect("MyPage.aspx?step=2&email=" + Server.UrlEncode(emailaddr));
如果它不一定是重定向,请参阅James Hay的回答。
答案 2 :(得分:0)
老实说,我不明白这个问题吗?
如果您在数据库中有电子邮件,那么您必须拥有数据库中的所有其他信息。因此,要跳过所有重新加载页面等,然后继续使用<asp:Panels>
或<asp:Views>
作为visible = false / true之间的交换,不需要页面重新加载回发。
实施例
if(email == emailFromDB)
{
panelStep1.visible=false;
panelStep2.visible=true;
// Insert information into whatever controls you have in mind.
}