更新 : 2007 年 11 月
ユーザーを 1 つの ASP.NET Web ページから他の Web ページにリダイレクトすることが必要になる場合があります。これは、マルチページ フォームなどで必要になります。
ページをリダイレクトするには、次のような方法があります。
他のページにポストするようにページを構成する この場合は、ユーザーは他のページにポストするように構成されたボタンをクリックします。これは、マルチページ フォームで便利です。ただし、これにはユーザーとのやり取りが必要です。詳細については、「ASP.NET Web ページにおけるページ間ポスティング」を参照してください。
ブラウザを動的に使用する この場合は、ユーザーのブラウザに別のページを取得するコマンドを送信します。この方法では、プログラムによって他のページにリダイレクトできます。ただし、リダイレクトによって新しい要求 (HTTP GET) が生成されるため、ソース ページからポストされたデータは失われます。
サーバー側メソッドを動的に使用する この場合、サーバーは他のページにコンテキストを転送するだけです。この方法の利点として、ページ コンテキスト情報をページ間で共有できます。欠点は、ユーザーのブラウザが転送について認識しないため、ブラウザの履歴が更新されません。ユーザーがページを更新した場合は、予測できない結果になります。サーバー転送におけるページ コンテキストの共有の詳細については、「方法 : ASP.NET Web ページ間で値をやり取りする」を参照してください。
ブラウザを使用してユーザーを他のページにリダイレクトするには
Response オブジェクトの BufferOutput プロパティを true に設定します。
ユーザーをリダイレクトするページの URL を渡して、Response オブジェクトの Redirect メソッドを呼び出します。
他の場所で設定されている UserLanguage ローカル変数の内容に応じてリダイレクトする方法のコード例を次に示します。
Response.BufferOutput = True If UserLanguage = "English" Then Response.Redirect("https://www.microsoft.com/gohere/look.htm") ElseIf UserLanguage = "Deutsch" Then Response.Redirect("https://www.microsoft.com/gohere/look_deu.htm") ElseIf UserLanguage = "Español" Then Response.Redirect("https://www.microsoft.com/gohere/look_esp.htm") End If
Response.BufferOutput = true; if (UserLanguage == "English") { Response.Redirect("https://www.microsoft.com/gohere/look.htm"); } else if (UserLanguage == "Deutsch") { Response.Redirect("https://www.microsoft.com/gohere/look_deu.htm"); } else if (UserLanguage == "Español") { Response.Redirect("https://www.microsoft.com/gohere/look_esp.htm"); }
サーバー側メソッドを使用してユーザーを他のページにリダイレクトするには
ユーザーをリダイレクトするページの名前を渡して、Transfer メソッドを呼び出します。
他のページにリダイレクトする方法のコード例を次に示します。
Protected Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Server.Transfer("Page2.aspx", True) End Sub
protected void Button1_Click(object sender, System.EventArgs e) { Server.Transfer("Page2.aspx", true); }