2011-08-09 244 views
0

我將執行暗示密碼重置功能。第一位用戶在表單中輸入電子郵件。然後點擊提交。在服務器端,我檢查電子郵件是否正確以及用戶是否存在於數據庫中,如果是,則重定向到下一頁(實際上它與questry字符串參數?step = 2相同)。在頁面之間傳遞數據asp.net

因爲loadBalancer,我不能使用會話。什麼是保持用戶郵件的最佳方式?

感謝您的幫助

+1

您對數據庫的電子郵件,不是嗎? – Saeed

+0

您可以使用[數據庫支持的會話狀態](http://support.microsoft.com/kb/317604)。但爲什麼重定向?你不能只使用傳輸來呈現那裏的頁面,然後當你仍然有電子郵件地址寫入頁面? – Rup

+0

我不明白,使用傳輸意味着什麼? – gruber

回答

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 
} 
+0

其實無視我的回答,我顯然沒有正確地閱讀你的問題 –

1

如果您不想使用回發(無論出於何種原因)並且無法使用Session,我所看到的唯一解決方案是將電子郵件包含在查詢字符串中。

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

如果它不一定是一個重定向,看到詹姆斯干草的答案。

0

我真的不明白這裏的問題?

如果您在數據庫中有電子郵件,這意味着您還擁有數據庫中的所有其他信息。因此,跳過所有重新加載頁面等,然後繼續使用<asp:Panels><asp:Views>作爲可見= false/true之間的交換不需要頁面重新加載回發。

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

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