ボタンを使用して、あるASP.NETページから別のページ( "Webform2.aspx")にリダイレクトするにはどうすればよいですか?
Response.Redirect()
を使用して、あるページから別のページにリダイレクトできます
次のように、ボタンのPostBackUrlプロパティを設定します。
button1.PostBackUrl= "Webform2.aspx";
個人的には、ボタンがクリックされたときに新しいページをロードするだけの場合は、クライアント側のスクリプトを使用してこれを実行します。
これには、次のようにJSライブラリ(例:jQuery)を使用できます。
jQuery
_$(function() {
$('#<%= button1.ClientID %>').click(function() {
window.location.href = "Webform2.aspx";
});
});
_
ASP.NET
_<asp:Button id="button1" runat="server"/>
_
または、特にASP.NETesqueの方法として、Antonioが提案するように_Button.PostBackUrl
_を使用できます。これは、クライアント側のスクリプトを引き続き使用しますが、自分で作成する必要はありません。 。ボタンのHTMLは次のようにレンダリングされます。
_<input type="submit" name="button1" value="Button" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("button1", "", true, "", "webform2.aspx", false, false))" id="button1" />
_
サーバー側で行う他の処理があり、後でリダイレクトする必要がある場合は、クリックハンドラーでResponse.Redirect("Webform2.aspx");
を使用します。
それでも問題が解決しない場合は、質問に詳細を追加して、何が起こっているのかを説明してください。
以下のコードを使用して、別のASP.NETページにリダイレクトできます。
Response.Redirect("Webform.aspx");
これが最も簡単な方法です
まあ、たくさんの方法があります。 _Response.Redirect
_、_Server.Transfer
_、ページへのJavascript呼び出し。
ボタンに対するサーバー側のアクションがない場合は、Javascript呼び出しが必要です。 _onclick="javascript:window.location.href = Webform2.aspx?id='<%=Request.QueryString["id"]%>'
_ "
_Server.Transfer
_はサーバー側でリダイレクトを行います。つまり、webform2からの応答後も、ブラウザは引き続き表示されます。 Webform1.aspxはリクエストをwebform2にリダイレクトし、webform2はリクエストを提供します。 (Req = 1、Res = 1)
_Response.Redirect
_:webform1は、ブラウザにwebform2に新しいリクエストを行うように求める応答を送信します。この場合、ブラウザはwebform2に新しいリクエストを作成するときにURLを変更します(Req = 1 + 1、Res = 1 + 1)
もう1つの方法があります。興味がある場合は、form.submit()
です。従来のhtmlフォームを送信します。
何よりも、PostBackURLを使用したクロスページポストバックについて言及するのを忘れました。 http://aspdotnetcode.source-of-humor.com/TipsAndTricks/General/CrossPagePostbackAspNetCrossPagePostback.aspx
以下のコードを使用できます:
protected void Button1_Click(object sender, EventArgs e) {
Response.Redirect("default2.aspx");
}
default2.aspx
が2番目のWebページ名であり、
Response.Redirect(string url)
は、clientにurl
にリダイレクトするように指示する302HTTPステータスコードを発行します。ブラウザはurl
の新しいリクエストを発行し、URLはアドレスバーで変更されます。
Server.Transfer(string path)
現在のページの実行を終了し、指定されたpath
で新しいページの実行を開始します。つまりinternallyIIS内。したがって、ブラウザのアドレスバーのURLは変更されません。転送先のページは、同じWebサイトのaspxページである必要があります。
違いは微妙ですが重要です。これについて考える簡単な方法は、「ユーザーはこのURLをブックマーク/お気に入りに追加する必要がありますか?」と自問することです。使用する Response.Redirect
URLが変更され、コンテンツへの今後のアクセスが新しいURLにある必要がある場合。使用する Server.Transfer
URLが正しく最新であるが、今回は別のコンテンツを表示する必要がある場合-エラーメッセージを表示している場合、続行するにはユーザーに資格情報を入力する必要がある場合、またはコンテンツを変更する必要がある他の理由がある場合URLはすべきではありません。
上記のいずれかは、コードビハインドのASP.NETボタンコントロールのClick
イベントハンドラー内で使用できます。
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("Webform2.aspx");
// OR
Server.Transfer("Webform2.aspx");
}
Response.RedirectメソッドとServer.Transferメソッドの両方を使用して、ユーザーを1つのWebページから別のWebページに転送します。どちらの方法も同じ目的で使用されますが、それでも次のようないくつかの違いがあります。
Response.Redirectメソッドはリクエストを新しいURLにリダイレクトし、新しいURLを指定しますが、現在のリクエストのServer.Transferメソッドは現在のページの実行を終了し、ページの指定されたURLパスを使用して新しいページの実行を開始します。
Response.RedirectとServer.Transferはどちらも、次のような同じ構文を持っています。
Response.Redirect( "UserDetail.aspx"); Server.Transfer( "UserDetail.aspx");
さらにいくつかのポイントに触れる前に、いくつかのHTTPステータスコードについて説明したいと思います。これらは、これら2つの基本的な違いを理解するために重要です。 HTTPステータスコードは、WebサーバーがWebブラウザまたはユーザーエージェントと通信するために使用するコードです。 Response.RedirectはHTTPリクエストをブラウザに送信し、次にブラウザはそのリクエストをWebサーバーに送信し、次にWebサーバーはWebブラウザに応答を配信します。たとえば、Webページ「UserRegister.aspx」ページにアクセスしていて、「UserDetail.aspx」Webページにリダイレクトするボタンがあるとします。