在asp.net页面之间传递数据

时间:2011-08-09 10:08:56

标签: c# .net asp.net

我要实现密码重置功能。第一个用户在表单中输入电子邮件。然后点击提交。在服务器端,我检查电子邮件是否正确以及用户是否存在于数据库中,如果是,那么我将重定向到下一页(实际上它是与questry字符串参数相同的页面?step = 2)。

由于loadBalancer,我无法使用会话。保持用户邮件的最佳方式是什么?

感谢您的帮助

3 个答案:

答案 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.
}