2011-08-09 4 views
0

Im暗黙のパスワードリセット機能に行きます。最初のユーザーは電子メールをフォームに入力します。次に、「送信」をクリックします。サーバー側では、電子メールが正しいかどうか、ユーザーがデータベースに存在するかどうかを確認し、そうであれば次のページにリダイレクトします(実際は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>をvisible = false/trueの間のスワップとして使用すると、ページリロードのポストバックが必要ありません。

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

    // Insert information into whatever controls you have in mind. 
} 
関連する問題