サンプル コードのダウンロード
(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) 使用するページとコントロールの用意
Default.aspx に、図2 のようにコントロールを貼り付けてください。Calendar コントロール 1 つ、Button コントロール 2 つ、Label コントロール 1 つです。各プロパティは、次表のようにしてください。
図
2
各コントロール
Calendar コントロール
Button コントロール 1
| プロパティ | 設定値 |
| ID | Button1 |
| Text | 通常ポストバック |
Button コントロール 2
| プロパティ | 設定値 |
| ID | Button2 |
| Text | ページ間ポストバック |
Label コントロール
また、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 を使えばページ間のポストバックを簡単に実現できます。