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

C# 在asp.net页面之间传递数据,c#,.net,asp.net,C#,.net,Asp.net,我将实施密码重置功能。第一个用户在表单中输入电子邮件。然后单击提交。在服务器端,我检查电子邮件是否正确,用户是否存在于数据库中,如果正确,我将重定向到下一页(事实上,它与questry字符串参数?step=2的页面相同) 由于loadBalancer,我无法使用会话。保持用户邮件的最佳方式是什么 感谢您的帮助如果是同一页,那么它应该相当简单。您可以添加隐藏的输入字段并将其附加到表单中,以便在按钮单击处理程序中: protected void Button1_Click(object sender

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

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


感谢您的帮助

如果是同一页,那么它应该相当简单。您可以添加隐藏的输入字段并将其附加到表单中,以便在按钮单击处理程序中:

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
}

如果您不想使用回发(无论出于何种原因)并且无法使用会话,我看到的唯一解决方案是将电子邮件包含在查询字符串中

Response.Redirect(“MyPage.aspx?step=2&email=“+Server.UrlEncode(emailaddr))


如果不一定是重定向,请参阅James Hay的答案。

我真的不明白这里的问题是什么

如果你在数据库中有电子邮件,那一定意味着你也在数据库中有所有其他信息。因此,要跳过所有重新加载页面等,请继续使用
,因为visible=false/true之间的交换不需要页面重新加载回发

范例

if(email == emailFromDB)
{
    panelStep1.visible=false;
    panelStep2.visible=true;

    // Insert information into whatever controls you have in mind.
}

数据库里有你的电子邮件,是吗?你可以用。但为什么要重定向?难道你不能使用transfer在那里呈现页面,然后当你还有电子邮件地址可以写入页面时?我不明白,使用transfer意味着什么?允许您切换正在服务器上呈现的页面。实际上,忽略我的回答,我显然没有正确阅读您的问题