.NETエンタープライズWebアプリケーション 開発技術大全
― エンタープライズWebアプリ開発に必要な知識と設計セオリー ―


ポストバック処理

マイクロソフト コンサルティング本部 赤間 信幸
2004/06/17

Page1 Page2 Page3 Page4

.NETエンタープライズWebアプリケーション 開発技術大全

 本記事は、日経BPソフトプレス/マイクロソフトプレスが発行している『.NETエンタープライズWebアプリケーション開発技術大全 Vol.2 ASP.NET 基礎編』の「第3章 ポストバック処理」から、同社の許可を得てその内容を転載したものです。

 同書はマイクロソフトのコンサルタントが執筆した.NETシステム設計/構築のための技術解説書で、全5巻で構成されています。このうち、第1巻から第3巻までがすでに発売されています(第4巻と第5巻は、2004年秋以降の発行が予定されています)。

  Insider.NETでは、全6回に渡り、.NET開発者にとって特に重要だと思われる個所をこの3巻より抜粋して掲載していく予定です。なお、書籍の詳細については本記事の最後に表記しています。

 今回抜粋している「ポストバック」は、
ASP.NETでプログラミングを行う際にまず理解しておかなければならない重要な項目の1つです。本章では、ポストバックの動作や仕組みが詳しく解説されており、その存在意義や開発上の注意点までを十分に把握することができます。

1 ポストバック処理の概要

ご注意:本記事は、前挙の書籍の内容を改訂することなく、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。

  従来型のプログラム開発の基本的な考え方は、ブラウザからの入力データの送信先を「次の画面を表示するプログラム」にするという考え方であったが、ポストバックではこの考え方を抜本的に改める。ポストバック処理とは、ユーザがクライアントブラウザ上で入力したデータを、次の別プログラムではなく同一プログラムに再送する処理のことを指す(図1)。これにより、『ブラウザ上での表示単位(ユーザインタフェース)』と、『サーバ上のプログラム』とのずれをなくすことができ、前述のような様々な問題点が解決される。

図1 ポストバック処理

 まずは一画面で完結する簡単なサンプルプログラムを用いて、ポストバックの動作原理を解説する。それに引き続き、画面遷移方法やデータの引継ぎ方法、入力エラーの検査・処理方法※1などを順番に解説していくこととする。

※1 入力エラーのチェック方法に関しては「第5章 検証コントロール」で詳細解説する。
 

1.1 最も簡単なポストバックアプリケーション
−HelloWorld.aspx ポストバック版

 まず最も簡単な例として、前章で解説したHelloWorld.aspxプログラムを改変し、図2のようなユーザが入力した名前を画面に表示するHello Worldプログラムを作成してみよう(リスト1)。

図2 HelloWorld.aspx ポストバック版

 以下に作業手順を示す。

A. プログラムの作成
 メモ帳などを用いて以下のソースコードを作成し、HelloWorld2.aspxというファイル名にて保存する。ファイルはC:\Inetpub\wwwroot下に保存して、IIS上で公開する(ソースコードの詳細は後ほど解説する)。

C#の場合

ページディレクティブ

<%@ Page Language="C#" %>
ASP.NET処理ブロック

<script runat="server">
  protected void Page_Load(object source, EventArgs e) {
  }
  protected void MyButton_OnClick(object source, EventArgs e) {
    MyLabel.Text = "Hello World, " + MyTextBox.Text + " !!";
  }
</script>
HTMLデザインブロック

<HTML><BODY>
  <FORM runat="server">
    <asp:TextBox runat="server" id="MyTextBox" />
    <asp:Button runat="server" id="MyButton" text="表示"
onclick="MyButton_OnClick" />
    <HR>
    <asp:Label runat="server" id="MyLabel" />
  </FORM>
</BODY></HTML>
VB.NETの場合

ページディレクティブ

<%@ Page Language="VB" %>
ASP.NET処理ブロック

<script runat="server">
  Protected Sub Page_Load(ByVal source As Object, ByVal e As EventArgs)
  End Sub

  Protected Sub MyButton_OnClick(ByVal source As object, ByVal e As
EventArgs)
    MyLabel.Text = "Hello World, " + MyTextBox.Text + " !!"
  End Sub
</script>
HTMLデザインブロック

<HTML><BODY>
  <FORM runat="server">
    <asp:TextBox runat="server" id="MyTextBox" />
    <asp:Button runat="server" id="MyButton" text="表示"
onclick="MyButton_OnClick" />
    <HR>

    <asp:Label runat="server" id="MyLabel" />
  </FORM>
</BODY></HTML>
リスト1 HelloWorld2.aspx

B. テスト実行
 http://localhost/HelloWorld2.aspx へアクセスし、簡単な操作を行ってみて頂きたい(図3)。

図3 HelloWorld2.aspxの実行結果

 従来型の開発では送信フォームと受信プログラムの2つのプログラムの組み合わせにより実現されていた対話型アプリケーションが、ASP.NETの場合には1つのプログラムファイルで実現されることになる。引き続き、このサンプルコードに関する詳細解説を行う。

 

 INDEX
  .NETエンタープライズWebアプリケーション 開発技術大全
  ポストバック処理
  1.ポストバック処理の概要
    2.ポストバックの処理シーケンス
    3.ポストバック処理の詳細なランタイム動作
    4.ポストバックの注意すべき点と設計のスタイル
 
インデックス・ページヘ  「.NETエンタープライズWebアプリケーション開発技術大全」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間