| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

ASP.NET 2005 Web アプリケーションの画面遷移

提供: MyMemoWiki
2020年2月15日 (土) 08:33時点におけるPiroto (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

ASP.NET 2005 Web アプリケーションの画面遷移

ASP.NET 2005 | ASP.NET | Visual Studio | C Sharp |

概要

ポストバック

  • Web フォームでは、ユーザーのブラウザー上に、HTML ベースの Web ページとしてユーザー インターフェイスが表示される
  • Web ページに関わる処理は、サーバーサイドで行われる
  • ブラウザー上でユーザーがボタンをクリックした場合、そのことがサーバーに通知(表示しているページ自身のURLへ HTTP POST)され、サーバー上に実装された Click イベントに呼応するイベント ハンドラーが実行される
  • 自分自身のページに対するポストを、「ポストバック」と呼ぶ

画面遷移の主な 4 つの方法

  • HyperLink コントロール
  • ポストバック先のサーバーサイドで、Response.Redirect
  • ポストバック先のサーバーサイドで、Server.Transfer
  • Button コントロールのポスト先が、別のページになるように設定(Cross-Page Posting)

Default.asp ページを作成

  • テキスト、ハイパーリンク、ボタン×3(それぞれの遷移方法確認用) を配置
  • ハイパーリンクの NavigateUrl=~/Page2.asp とする

0213 asp37.jpg

  • ボタン3 の PostBackUrl=~/Page2.asp とする

0215 asp39.jpg

  • イベントハンドラを実装
protected void Button1_Click(object sender, EventArgs e)
{
    Response.Redirect("~/Page2.aspx");
}
protected void Button2_Click(object sender, EventArgs e)
{
    Server.Transfer("~/Page2.aspx");
}
protected void Button3_Click(object sender, EventArgs e)
{
    
}


Page2.asp ページを作成

  • テキストを置く

0214 asp38.jpg

  • ページロードイベントを実装
protected void Page_Load(object sender, EventArgs e)
{
    if (Page.PreviousPage != null)
    {
        TextBox txt = (TextBox)Page.PreviousPage.FindControl("TextBox1");
        if (txt != null)
        {
            TextBox1.Text = txt.Text;
        }
    }
}

実行結果

0216 asp40.jpg

テキストボックスの値の受け渡し
遷移方法 データの受け渡し 対象 内容
HyperLink されない HyperLink.NavigateUrl クリックされたときにリンクする URL を取得または設定
Response.Redirect されない HttpResponse.Redirect クライアントを新しい URL にリダイレクト
Server.Transfer される HttpServerUtility.Transfer 現在のページの実行を終了し、現在の要求に対して、そのページへの指定した URL パスを使用して新しいページの実行を開始
Coss-Page Posting される Button.PostBackUrl クリックされたときに現在のページからのポスト先となるページの URL を取得または設定。既定値は空の文字列、この場合、そのページ自体にポストバックされる

0217 asp41.jpg