==[[ASP.NET 2005 Web アプリケーションの画面遷移]]==
[[ASP.NET 2005]] | [[ASP.NET]] | [[Visual Studio]] | [[C Sharp]] |
*http://msdn.microsoft.com/ja-jp/netframework/ee692372.aspx
===概要===
====ポストバック====
*Web フォームでは、ユーザーのブラウザー上に、HTML フォームでは、ユーザーのブラウザー上に、[[HTML]] ベースの Web ページとしてユーザー インターフェイスが表示される
*Web ページに関わる処理は、サーバーサイドで行われる
*ブラウザー上でユーザーがボタンをクリックした場合、そのことがサーバーに通知(表示しているページ自身のURLへ [[HTTP ]] POST)され、サーバー上に実装された Click イベントに呼応するイベント ハンドラーが実行される
*自分自身のページに対するポストを、「ポストバック」と呼ぶ
===画面遷移の主な 4 つの方法===
*HyperLink コントロール
*ポストバック先のサーバーサイドで、Responseポストバック先のサーバーサイドで、[[R]]esponse.Redirect [[R]]edirect
*ポストバック先のサーバーサイドで、Server.Transfer
*Button コントロールのポスト先が、別のページになるように設定(Cross-Page Posting)
===例===
====Default.asp ページを作成====
*テキスト、ハイパーリンク、ボタン×3テキスト、ハイパー[[リンク]]、ボタン×3(それぞれの遷移方法確認用) を配置*ハイパーリンクの ハイパー[[リンク]]の NavigateUrl=~/Page2.asp とする
[[File:0213_asp37.jpg]]
*ボタン3 の PostBackUrl=~/Page2.asp とする
protected void Button1_Click(object sender, EventArgs e)
{
Response[[R]]esponse.Redirect[[R]]edirect("~/Page2.aspx");
}
protected void Button2_Click(object sender, EventArgs e)
protected void Page_Load(object sender, EventArgs e)
{
if (Page.PreviousPage Pre[[vi]]ousPage != null)
{
TextBox txt = (TextBox)Page.PreviousPagePre[[vi]]ousPage.FindControl("TextBox1");
if (txt != null)
{
|されない
|HyperLink.NavigateUrl
|クリックされたときにリンクする クリックされたときに[[リンク]]する URL を取得または設定
|-
|Response[[R]]esponse.Redirect[[R]]edirect
|されない
|HttpResponseHttp[[R]]esponse.Redirect[[R]]edirect|クライアントを新しい URL U[[R]]L にリダイレクト
|-
|Server.Transfer
|される
|HttpServerUtility.Transfer
|現在のページの実行を終了し、現在の要求に対して、そのページへの指定した URL U[[R]]L パスを使用して新しいページの実行を開始
|-
|Coss-Page Posting
|される
|Button.PostBackUrl
|クリックされたときに現在のページからのポスト先となるページの URL U[[R]]L を取得または設定。既定値は空の文字列、この場合、そのページ自体にポストバックされる
|-
|}
[[File:0217_asp41.jpg]]