印刷用ページ      送信     
クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
テクニカルドキュメント
.NET 開発
プログラミング Tips
 別のページへポストバックする方法
別のページへポストバックする方法

download.gifサンプル コードのダウンロード (aspnettips_Postback.msi, 251 KB)

※このサンプルをお使いいただくためには、 Visual Studio 2005が必要です。

従来の ASP.NET では、自分自身のページへだけポストバックをすることができました。そのため、別のページへ処理を移行したい場合は、自分のページでイベントを処理した後、別のページへ移動する必要がありました。

ASP.NET 2.0 では、別ページへのポストバックを簡単に実現できます。各種ボタンコントロールの PostBackUrl に、移動先の URL を設定することで、別ページへのポストバックを行うことができます。

次のようなページを作成してみます(図1)。このページには、1 つの Calendar コントロールと 2 つの Button コントロール、1 つの Label コントロールがあります。この中の [通常ポストバック] ボタンを押すと、Label コントロールにカレンダーで選択中の日付が表示されます。

一方、[ページ間ポストバック] ボタンを押すと、別ページへ移動し、そこに選択中の日付を表示します。

 図

 図 1 今回作成するページ


今回は、次の手順でページを作成します。

  1. 使用するページとコントロールの用意

  2. ページ間ポストバックの設定

  3. 実行

(1) 使用するページとコントロールの用意

Default.aspx に、図2 のようにコントロールを貼り付けてください。Calendar コントロール 1 つ、Button コントロール 2 つ、Label コントロール 1 つです。各プロパティは、次表のようにしてください。

 図

 図 2 各コントロール


Calendar コントロール

プロパティ

設定値

ID

Calendar1

Button コントロール 1

プロパティ

設定値

ID

Button1

Text

通常ポストバック

Button コントロール 2

プロパティ

設定値

ID

Button2

Text

ページ間ポストバック

Label コントロール

プロパティ

設定値

ID

Label1

また、Default.aspx 以外にもう 1 つ Web フォームを作成します。メニューバーから [新規作成] - [ファイル] を選択し、「新しい項目の追加」ダイアログボックスで [Web フォーム] を選択します(図 3)。ファイル名は、Page2.aspx にします。

 図

 図 3 「新しい項目の追加」ダイアログボックス


Page2.aspx には、Label コントロールを 1 つ貼り付けておきます。ID は、Label1 にします。

(2) ページ間ポストバックの設定

[ページ間ポストバック] ボタンを押したときに Page2.aspx へポストバックするため、PostBackUrl プロパティを 「~/Page2.aspx」 に設定します(図4)。

 図

 図 4 PostBackUrl プロパティ


ポストバックを受けた Page2.aspx では、次のようにして Default.aspx の Calendar コントロールにアクセスして、値を取得します。

Partial Class Page2
    Inherits System.Web.UI.Page
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim cal As Calendar
        cal = CType(Page.PreviousPage.FindControl("Calendar1"), Calendar)
        Label1.Text = cal.SelectedDate.ToShortDateString()
    End Sub
End Class

リスト 1 Page2.aspx.vb

ポスト元のページは、Page.PreviousPage プロパティを使って取得できます。

次に、Default.aspx の [通常ポストバック] ボタンを押したときの処理も記述しておきます。

Partial Class _Default
    Inherits System.Web.UI.Page
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Label1.Text = Calendar1.SelectedDate.ToShortDateString()
    End Sub
End Class

リスト 2 Default.aspx.vb

(3) 実行

実行してみます。[通常ポストバック] ボタンを押すと、カレンダーで選択した日付が、自分自身のページに表示されます(図 5)。[ページ間ポストバック] ボタンを押すと、Page2.aspx ページの方に移動し、そこにカレンダーで選択した日付が表示されます(図 6)。

 図

 図 5 [ 通常ポストバック ] ボタンを押したところ


 図

 図 6 [ ページ間ポストバック ] ボタンを押して Page2.aspx へ移動したところ


以上のように、ASP.NET 2.0 を使えばページ間のポストバックを簡単に実現できます。

© 2008 Microsoft Corporation.All rights reserved. 使用条件  |  商標  |  プライバシー
Page view tracker