私は登録フォームを持っており、ユーザーを成功ページに転送して、電子メールが自分の電子メールに送信されたことを伝えたいと考えています。彼のメールを登録ページから成功ページに転送する必要があります。
Server.Transfer についてはわかりましたが、パラメーターの送信方法がわかりません。URL の情報を明らかにしたくないので、クエリ文字列を使用したくありません。
これを行う適切な方法は(可能であれば)何ですか?
私は登録フォームを持っており、ユーザーを成功ページに転送して、電子メールが自分の電子メールに送信されたことを伝えたいと考えています。彼のメールを登録ページから成功ページに転送する必要があります。
Server.Transfer についてはわかりましたが、パラメーターの送信方法がわかりません。URL の情報を明らかにしたくないので、クエリ文字列を使用したくありません。
これを行う適切な方法は(可能であれば)何ですか?
Server.Transfer("destination.aspx", true)
上記のコードには、コントロールが転送されるページの名前と、転送先ページで現在のフォーム状態を保持することを示すブール値「True」が含まれていることがわかります。
ログインページでプロパティを設定し、そこに電子メールを保存します。
これが完了したら、Server.Transfer("~/SuccessPage.aspx", true);
リダイレクトした他のページで、次のようなことを確認する必要があります。
if(this.PreviousPage != null) {
((LoginPageType)this.PreviousPage).MyEmailProperty;
}
サーバー転送を使用する場合、実行を別のサーバー ハンドラーに移動するだけです。ユーザーには新しい URL やパラメーターが表示されないため、この転送を安全に行うことができます。
むしろ違うやり方をお勧めします。
ユーザーが登録ボタンをクリックすると、すべてが確認され、現在のページから電子メールが送信されます (したがって、データを別のページに転送する必要はまったくありません)。すべてがうまくいった場合は、次のようにリダイレクトします。
Response.Redirect("/order/success.aspx");
何か問題があった場合 (検証エラー、電子メールの送信で例外が発生した場合) は、再試行するための適切なページにいます。ほとんどの場合、Server.Transfer はまったく使用しません。
値をどこかに保持する必要があります。明らかなオプションは、Session オブジェクトまたはデータベースにあります。