Visual Basic から ASP.NET への移行

Scott Mitchell

August 2003

適用対象 :
    Microsoft® ASP.NET
    Microsoft® Visual Basic®

概要 : ASP.NET による Web アプリケーション開発と従来のデスクトップ アプリケーション開発との類似点と相違点について説明します。この記事は、ASP.NET Web アプリケーションの開発に関心がある Visual Basic 6.0 開発者を対象に、Visual Basic 6.0 によるデスクトップ アプリケーション開発と Visual Basic .NET による ASP.NET Web アプリケーション開発の違いを解説しています。

ASPNETCrashCourse.msi をダウンロードします。

目次

はじめに
ASP.NET を使用するための準備
初めての ASP.NET Web ページの作成
Web アプリケーションとデスクトップ アプリケーションの重要な違い
Web フォーム間の値の受け渡し
まとめ

はじめに

.NET が登場するまで、従来の ASP Web アプリケーションの開発と Microsoft Visual Basic® 6.0 による Microsoft® Windows® デスクトップ アプリケーションの開発は、さまざまな点でまったく異なるものでした。まず第 1 に、Visual Basic アプリケーションのユーザー インターフェイスは、Microsoft Visual Studio® の GUI ツールを使ってドラッグ アンド ドロップでデザインできるのに対し、ASP Web アプリケーションのユーザー インターフェイスを作成するには、適切なインターフェイスを生成するための HTML マークアップを手作業で追加しなければなりません。また、ASP Web ページには、HTML マークアップとソース コードが混在するスクリプト コードが含まれているのに対し、Visual Basic アプリケーションでは、クラスやモジュールなどの構造化プログラミングまたはオブジェクト指向プログラミングの構成要素が使用されます。

.NET が登場し、従来の ASP は ASP.NET へと進化しました。ASP.NET のさまざまな機能により、ASP.NET Web ページを Visual Basic アプリケーションの個々のフォームと同じように作成できるようになりました。しかしその一方で、Web アプリケーションとデスクトップ アプリケーションの間には、配布形態に起因するいくつかの根本的な違いも残っています。

この記事では、まず最初に、ASP.NET Web アプリケーションの開発を始めるために必要な作業を確認します (既に ASP.NET を使用している場合はこのセクションを飛ばしてもかまいません)。次に、ASP.NET Web アプリケーションを Windows デスクトップ アプリケーションと同じように作成できるようにしている ASP.NET の機能について説明します。また、Visual Studio .NET を使って簡単な ASP.NET Web ページを例として作成し、Web アプリケーションとデスクトップ アプリケーションの作成方法がいかに似ているかを実際に見てみます。Web アプリケーションの開発とデスクトップ アプリケーションの開発には、いくつかの根本的な違いもあります。ここではそれらについても説明します。最後に、Visual Basic の一般的なタスクとしてフォーム間での情報の受け渡しを取り上げ、それを ASP.NET Web アプリケーションで実現するにはどうすればよいのかを解説します。

ASP.NET を使用するための準備

ASP.NET Web ページの作成についての議論に入る前に、まず、ASP.NET Web ページを処理できるコンピュータを用意する必要があります。Microsoft Windows 2000、Microsoft Windows XP Professional、または Microsoft Windows Server™ 2003 のいずれかが実行されているコンピュータが必要です。そのようなコンピュータを用意できない場合は、Web ホスティング サービスを利用する方法もあります。ASP.NET をサポートしている Web ホストについては、ASP.NET ホスティング サービス情報で調べることができます。

自分のコンピュータで ASP.NET Web ページを処理する場合は、次の 2 つのソフトウェア コンポーネントをインストールする必要があります。

  • Microsoft Internet Information Service (IIS) 5.0 以上
  • .NET Framework

IIS は、サーバー バージョンの Windows に付属している Microsoft の Web サーバーです。Windows Server 2003 には IIS 6.0 が、Windows 2000 と Windows XP Professional には IIS 5.1 が標準で付属しています。Windows 2000、Windows XP Professional、または Windows Server 2003 を実行しているコンピュータで、IIS がインストールされているかどうかを確認するには、[コントロール パネル] を開き、[プログラムの追加と削除] をダブルクリックし、[Windows コンポーネントの追加と削除] をクリックします。図 1 のダイアログ ボックスが表示されます。[インターネット インフォメーション サービス (IIS)] チェック ボックスがオンになっている場合は、IIS がインストールされています。そうでない場合は、このチェック ボックスをオンにし、[次へ] をクリックして IIS をインストールします。

図 1. IIS がインストールされているかどうかを [Windows コンポーネント] ダイアログ ボックスで確認します。

IIS のインストールの詳細については、Microsoft.com で以下の公式ガイドを参照してください。

IIS Web サーバーに加えて、.NET Framework 再配布可能パッケージも Web サーバーにインストールする必要があります。この記事の執筆の時点では、.NET Framework のバージョンは 1.1 で、Microsoft .NET Framework Version 1.1 再頒布可能パッケージ からダウンロードできます。.NET Framework には、.NET アプリケーションを Web サーバー上で実行するために必要なクラス フレームワークが含まれています。ASP.NET Web アプリケーションは .NET アプリケーションであり、.NET Framework のさまざまなクラスを利用するため、.NET Framework 再配布可能パッケージが Web サーバーにインストールされていないと使用できません。

**メモ   **Web サーバーと .NET Framework はどちらからでもインストールできますが、Web サーバーを先にインストールすることをお勧めします。先に Web サーバーをインストールしてから .NET Framework をインストールすると、ASP.NET Web ページが処理されるように Web サーバーの構成設定が更新されます。.NET Framework を先にインストールした場合は、Web サーバーで ASP.NET Web ページが処理されません。ただし、この問題は、aspnet_regiis.exe ファイルを実行することによって簡単に修正できます。詳細については、4GuysFromRolla.com : ASP FAQS : ASP.NET Non-MS link (英語) の該当するトピックを参照してください。

初めての ASP.NET Web ページの作成

ASP.NET Web ページは、Visual Basic アプリケーションと同じように、任意のテキスト エディタで作成できます。しかし、Visual Studio .NET のようなツールを使用すれば、はるかに簡単に作成できます。ASP.NET Web ページを作成する場合は、開発用のコンピュータに最新バージョンの Visual Studio .NET をインストールするようにしてください。ASP.NET 用の開発ツールはほかにもありますが (ASP.NET Web Matrix など)、Visual Studio .NET では、Visual Basic 6.0 に最も近いデザイン インターフェイスを利用できます。

それではさっそく、簡単な ASP.NET Web ページを作成して、ASP.NET アプリケーションの作成方法が従来の Windows デスクトップ アプリケーションの作成方法といかに似ているかを実際に見てみましょう。まず、Visual Studio .NET を起動し、新しい Visual Basic ASP.NET Web アプリケーション プロジェクトを作成します。次に、[場所] ボックスで、作成する ASP.NET アプリケーションを配置する URL を指定します。ASP.NET Web ページを開発用のコンピュータで処理する場合は、URL を https://localhost/ のままにして、プロジェクト名を入力します (例 : https://localhost/ProjectName)。ASP.NET Web アプリケーションをリモート Web サーバーでホストする場合は、Web サーバーの URL または IP アドレスとプロジェクト名を入力します (例 : http://WebServerURLorIP/ProjectName)。図 2 は、Visual Studio .NET の [新しいプロジェクト] ダイアログ ボックスのスクリーンショットです。この図では、新しい Visual Basic ASP.NET Web アプリケーションを https://localhost/ASPNETCrashCourse に作成しています。

図 2. 新しい Visual Basic ASP.NET Web アプリケーションの作成

[OK] をクリックすると、新しい Web アプリケーションが作成されます。その結果、[場所] ボックスに指定したディレクトリが作成され、いくつかのファイルが追加されます。また、新しく作成されたディレクトリが IIS アプリケーションであることがわかるように、Web サーバーの構成が更新されます。

ASP.NET Web アプリケーションは、いくつかの ASP.NET Web ページで構成されています。各 Web ページは、.aspx 拡張子を持つ独立したファイルです。ASP.NET Web アプリケーションにとっての ASP.NET Web ページは、Visual Basic 6.0 アプリケーションにとっての個々のフォームに相当します。つまり、ASP.NET Web ページは、Web サイトの訪問者がやり取りするインターフェイスにあたります。各 ASP.NET Web ページは、Visual Basic のフォームと同様に、次の 2 つの独立したパーツによって構成されています。

  • グラフィカル ユーザー インターフェイス
  • ユーザー インターフェイスのコントロールが発生させたイベントに応答するコードを持つクラス

ASP.NET Web ページは、よく "Web フォーム" と呼ばれます。また、ASP.NET Web ページのユーザー インターフェイスに追加できるコントロールは、"Web コントロール" と呼ばれます。

新しい ASP.NET Web アプリケーションを作成すると、既定の Web フォーム (WebForm1.aspx) が作成されます。図 3 は、新しい ASP.NET Web アプリケーション プロジェクトを作成した後の Visual Studio .NET のスクリーンショットです。

図 3. 新しい ASP.NET Web アプリケーション プロジェクトを作成した後の Visual Studio .NET

ここで少し立ち止まって、図 3 の画面を詳しく見てみましょう。ここで表示されているのは、WebForm1.aspx の "デザイナ" です。デザイナは、ASP.NET Web ページの WYSIWYG ビューを提供します。これにより、サイトを訪れたユーザーに Web ページがどのように表示されるのかがわかります。Web コントロールは、ツールボックスからデザイナにドラッグするだけで簡単に ASP.NET Web ページに追加できます。

ASP.NET Web ページは Web ページなので、Web コントロールだけでなく HTML マークアップも含まれています。ASP.NET Web ページの HTML マークアップは、[HTML] タブをクリックするだけで表示できます。[HTML] タブは、デザイナ画面の左下に [デザイン] タブと並んで配置されています。これらのタブを使って画面を切り替えることにより、ASP.NET Web ページのユーザー インターフェイスを WYSIWYG デザイナで作成したり、HTML ビューで Web ページの HTML を直接編集して作成したりできます。

ここで、Visual Studio .NET に慣れるため、また、ASP.NET Web アプリケーションの作成手順をより深く理解するために、WebForm1.aspx に Web コントロールをいくつか追加してみます。例として、単純な金融電卓として機能する ASP.NET Web ページを作成することにします。この Web ページでは、初期投資の元金、金利、および投資期間を入力すると、投資の将来価値を計算できます。

この Web ページを作成するには、Label Web コントロールと TextBox Web コントロールをいくつかと、Button Web コントロールを 1 つ追加する必要があります。Label Web コントロールは、Visual Basic 6 の場合と同じように、静的または動的なテキスト コンテンツを表示します。Label Web コントロールを追加するには、[ツールボックス] からデザイナに Label Web コントロールをドラッグします。その後、Label Web コントロールをクリックすると、[プロパティ] ペインにこのコントロールのプロパティが読み込まれます。ここで、このコントロールの Text プロパティと ID プロパティの値を設定します。Text プロパティには表示したいテキストを、ID プロパティには一意の値をそれぞれ設定します。TextBox Web コントロールについても、同じようにデザイナに追加します。

図 4 は、必要な Label Web コントロールと TextBox Web コントロールをすべて追加した後のデザイナのスクリーンショットです。収集するユーザー入力ごとに TextBox Web コントロールが 1 つずつあります。これらの Web コントロールを追加する際には、各 Web コントロールの ID プロパティを意味のある値に設定する必要があります。Visual Basic の場合と同様に、ID プロパティは一意の識別子として機能します。これにより、ASP.NET Web ページのソース コードで、Web コントロールをプログラムによって参照できます。このエクササイズでは、各 TextBox Web コントロールの ID を「StartValue」、「Rate」、および「Duration」に設定します。

図 4. 適切な Label Web コントロールと TextBox Web コントロールを追加した後のデザイナ

図 4 の Label Web コントロールと TextBox Web コントロールに加えて、さらに 2 つの Web コントロールを追加する必要があります。1 つは、計算結果を表示する Label Web コントロールです。この Label Web コントロールをページの一番下の方に配置し、Text プロパティを空にして、ID プロパティの値を「Results」に設定します。もう 1 つは、Button Web コントロールです。この Web コントロールは、ユーザーがデータを入力した後にクリックするボタンを表示します。この Button Web コントロールの Text プロパティの値を「Display Future Investment Value」に設定します。この 2 つの Web コントロールを追加すると、画面は図 5 のようになります。

図 5. 最後の 2 つの Web コントロールを追加した後のデザイナ

以上で、ユーザー インターフェイスのデザインが完了し、コードを記述する準備が整いました。コードでは、Button Web コントロールをクリックすると計算が実行されて、Results Label に結果が表示されるようにします。Visual Basic 6 のフォームの場合と同様に、デザイナで Button Web コントロールをダブルクリックするだけで、Button Web コントロールの Click イベントのイベント ハンドラを追加できます。

Button Web コントロールの Click イベントのイベント ハンドラが作成されると、ASP.NET Web ページのソース コード部分が表示されます。そこに新しいイベント ハンドラが作成されています (図 6 を参照)。ASP.NET Web ページのソース コード部分は、WebForm1.aspx.vb という名前の別のファイルにあります。

図 6. ASP.NET Web ページのソース コード部分に自動的に追加された Click イベント ハンドラ

後は、投資の将来価値を計算し、その値を Results Label に表示するためのコードを記述するだけです。次のコードは、Click イベント ハンドラの完全なコードです。Visual Basic 開発者から見ればごく簡単なコードになっています。

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ' 投資の将来価値を計算します。
        ' 投資の将来価値は、元金と投資期間の利息の合計になります。
        ' 式 : Value = Principal * e^(Rate/12 * Duration)

        Dim value As Double
        Dim beginningWith As Double = StartValue.Text
        Dim interestRate As Double = Rate.Text
        Dim investmentTime As Double = Duration.Text

        value = beginningWith * Math.Exp((interestRate / 100) * investmentTime / 12)

        ' 結果の値を Results Label に割り当てます。
        Results.Text = "The investment, after " & investmentTime & " months," & _
                       " will be worth: " & FormatCurrency(value)
End Sub

この ASP.NET Web ページをテストするには、[デバッグ] メニューの [開始] をクリックします (または F5 キーを押します)。ASP.NET Web ページのソース コードがコンパイルされ、Web ブラウザが起動して、指定されているスタート ページが読み込まれます (WebForm1.aspx が既定のスタート ページです)。その結果、図 7 のようなブラウザ ウィンドウが表示されます。テキスト ボックスに値を入力してボタンをクリックすると、入力フォームの下に結果が表示されます (図 8 を参照)。

図 7. 最初に表示されたときの WebForm1.aspx

図 8. 情報を入力して [Display Future Investment Value] ボタンをクリックした後の WebForm1.aspx

Web アプリケーションとデスクトップ アプリケーションの重要な違い

Web アプリケーションの作成方法とデスクトップ アプリケーションの作成方法は多くの点で似ているため、ASP.NET アプリケーションの作成手順は Visual Basic 開発者にとってより親しみやすいものとなっています。しかし、両者の間には、微妙ではありますが重要な違いもいくつかあり、これらを理解しておく必要があります。Web アプリケーションとデスクトップ アプリケーションの最も根本的な違いは、配布形態です。

デスクトップ アプリケーションは、自己完結した要素としてユーザーのコンピュータ上で直接実行されます。アプリケーションのユーザー インターフェイスとユーザー入力の処理とが物理的に分断されていることもありません。さらに、アプリケーションの "状態" はアプリケーション自体に含まれています。つまり、ユーザーが複数のフォームにデータを入力する必要がある場合は、各フォームで前のフォームの値を簡単に調べたり、その値にアクセスしたりできます。

Web アプリケーションでは同じようにはいきません。Web アプリケーションの場合、ユーザー入力を処理するソース コードは Web サーバーにあるのに対し、ユーザー インターフェイスはユーザーのコンピュータに送信されて、Web ブラウザで表示されます。したがって、ユーザー インターフェイスと Web アプリケーションのコードの間に直接のつながりはありません。

たとえば、先ほどの金融電卓アプリケーションでは、Web サイトの訪問者が ASP.NET Web ページを要求すると、ASP.NET Web ページは HTML マークアップを返します。この HTML マークアップは、ページのユーザー インターフェイスと、ページのソース コード部分で実行されるコードに基づいて生成されます。ユーザーの Web ブラウザは、ユーザーのコンピュータで、受け取った HTML マークアップからグラフィカル ユーザー インターフェイスを描画します。この時点で、この HTML マークアップを生成した ASP.NET Web ページとユーザーの Web ブラウザとの間に直接のつながりはありません。

続いてユーザーは、自分のコンピュータでさまざまなテキスト ボックスにデータを入力し、[Display Future Investment Value] ボタンをクリックします。このボタンがクリックされると、ユーザーの Web ブラウザは同じ ASP.NET Web ページに要求を返し、ユーザーがさまざまなテキスト ボックスに入力した値をその他の情報と共に送信します。ASP.NET Web ページは、この情報によってユーザーがボタンをクリックしたことを確認し、Button Web コントロールの Click イベントを発生させます。その結果、Click イベント ハンドラが実行されます。この Click イベント ハンドラは、既に見たように、投資の将来価値を計算し、値を Results Label に表示します。この新しい表示画面は、HTML マークアップとしてユーザーのブラウザに返されます。その結果、ユーザーに対して前と同じ Web ページが表示されますが、今度はページの一番下に投資の将来価値が表示されます。

要するに、Web アプリケーションでは、インターネットの非接続かつステートレスな性質によって、提供可能な機能が制限されています。たとえば、作成するアプリケーションで、ユーザーに郵便番号の入力を要求するとします。この場合、Visual Basic では、TextBox コントロールを追加して、そのコントロールに対するキー入力を簡単にトラップできます。たとえば、ユーザーが数字以外のキーを入力した場合は、その入力を受け入れないようにすることも、なんらかのフィードバック機構を提供して、郵便番号として無効な文字を入力したことをユーザーに知らせることもできます。しかし、Web アプリケーションの場合は、ASP.NET Web ページのソース コード部分でそのような機能を実現するのは不可能です。これは、ASP.NET Web ページのソース コード部分はユーザーのブラウザがページを要求したときにしか実行されないためです。ブラウザがページを要求するのは、ページが最初に読み込まれるときと、ボタン クリックやその他の方法によってページがサーバーに送信されるときだけです。

Web フォーム間の値の受け渡し

Visual Basic アプリケーションの一般的なタスクには、フォーム間での値の受け渡しが伴います。たとえば、従業員データベース アプリケーションに、従業員のドロップダウン リストと全従業員に共通の情報を含むフォームがあったとします。この 1 つ目のフォームで特定の従業員を選択し、[詳細] ボタンをクリックすると、選択した従業員の名前、住所、および給与情報を含む 2 つ目のフォームが表示されます。Visual Basic デスクトップ アプリケーションは、接続されたステートフルな状態にあるため、共通のモジュールを使ってすべてのフォームに共通の値を保持したり、ドロップダウン リストで選択された値をマスタ フォームから詳細フォームに公開したりできます。

一方、Web フォームは、インターネットの非接続かつステートレスな性質により、Web ブラウザから要求されたときにしか実行されません。このため、ある Web フォームから別の Web フォームを読み込むためには、その Web フォームの URL を要求するようにユーザーのブラウザに対してなんらかの形で指示しなければなりません。Web フォーム間の値の受け渡しには、URL の QueryString が使用できます。この QueryString による Web フォーム間の値の受け渡しの説明に入る前に、まず、Response.Redirect() メソッドについて説明します。このメソッドは、指定した URL を要求するように Web ブラウザに指示します。このメソッドを通じて、ある Web フォームから別の Web フォームを読み込むことができます。

ここで、Response.Redirect() メソッドの動作を見るために、Button Web コントロールを 1 つ持つ ASP.NET Web ページを作成します。ユーザーがこのボタンをクリックすると、別の Web フォームに移動します。まず、1 つ目の Web フォーム (Button Web コントロールを持つ Web フォーム) を作成し、First.aspx という名前を付けます。新しい Web フォームを作成するには、プロジェクト名 ASPNETCrashCourse を右クリックし、[追加] をポイントし、[Webフォームの追加] をクリックします。次に、この Web フォームに Button Web コントロールを追加して、Text プロパティの値を「Click Me」に設定します。図 9 は、この ASP.NET Web ページを作成して Button Web コントロールを追加した後の Visual Studio .NET のスクリーンショットです。

図 9. Button Web コントロールを追加した後の First.aspx Web フォーム

次に、デザイナで [Button Web] コントロールをダブルクリックして、Click イベントのイベント ハンドラを追加します。このイベント ハンドラに、次のコードを追加します。

Response.Redirect("Second.aspx")

このコードからわかるように、Response.Redirect() メソッドは文字列パラメータを 1 つ取ります。このパラメータは、ユーザーのブラウザのリダイレクト先となる URL です。次に、Second.aspx という 2 つ目の Web フォームを作成します。この Web フォームには、Label Web コントロールを 1 つだけ追加して、Text プロパティの値を「Welcome to the Second Web Form」に設定します。

続いて、First.aspx Web ページをテストします。そのためにはまず、First.aspx をスタート ページに設定する必要があります。ソリューション エクスプローラで [First.aspx] を右クリックし、[スタート ページに設定] をクリックします。その後、[デバッグ] メニューの [開始] オプションをクリックすると、ASP.NET Web ページのソース コード部分がコンパイルされ、Web ブラウザが起動して First.aspx に移動します。その結果、ブラウザにボタンが 1 つ表示されます。このボタンをクリックすると、ブラウザが First.aspx を再度要求します。ブラウザから要求を受けると、First.aspx のソース コード部分が実行され、Button Web コントロールの Click イベントが発生して、イベント ハンドラが実行されます。その結果、Response.Redirect() メソッドが呼び出されて、Second.aspx を要求するよう指示するメッセージがユーザーの Web ブラウザに送信されます。その後、Second.aspx が要求されて、結果の出力 ("Welcome to the Second Web Form" というメッセージ) がユーザーのブラウザに表示されます。

これで、Response.Redirect() を使ってユーザーのブラウザに別の Web フォームを読み込む方法がわかりました。QueryString によってある Web フォームから別の Web フォームに単純なスカラ値のセット (文字列、数字、日付など) が渡されます。QueryString は、Web フォームの URL に追加されるテキストで、変数の名前と値のリストが次の形式で含まれています。

VariableName1=Value1&VariableName2=Value2&...&VariableNameN=ValueN

変数の名前と値から成るペアの間をアンパサンドで区切り、変数の名前と値の間を等号で区切ります。QueryString が追加された URL は、たとえば次のようになります。

http://www.SomeSite.com/SomePage.aspx?SomeName=SomeValue&SomeOtherName=
  SomeOtherValue

ここで、先ほどの First.aspx を修正して、既存の Button Web コントロールに加えて新たに TextBox Web コントロールを追加して、ユーザーが文字列を入力できるようにします。さらに、Button Web コントロールのイベント ハンドラで、Response.Redirect() メソッドの呼び出しを修正して、文字列の値が Second.aspx Web フォームに渡されるようにします。最後に、Second.aspx Web フォームで、1 つ目の Web フォームから渡される文字列の値を Label Web コントロールに表示します。

まず、First.aspx に TextBox Web コントロールを追加して、ID プロパティを「ValueToPass」に設定します。次に、Click イベント ハンドラで、この ValueToPass TextBox の Text プロパティの値を 2 つ目の Web フォームに渡します。そのためには、イベント ハンドラのコードを変更する必要があります。このコードは、現在次のようになっています。

Response.Redirect("Second.aspx")

これを次のように変更します。

Response.Redirect("Second.aspx?TextBoxValue=" & Server.UrlEncode(ValueToPass.Text))

Server.UrlEncode() メソッドは、渡された文字列パラメータを QueryString で使用できるようにエンコードします。古いブラウザでは、QueryString で一部の文字 (スペースなど) が使用できないため、これらの文字をエスケープする必要があります (たとえばスペースは + にエスケープされます)。Server.UrlEncode() では、これらのエスケープ処理をすべて自動的に行うことができます。この変更の結果、First.aspx のボタンをクリックすると、ユーザーの Web ブラウザが Second.aspx?TextBoxValue=ValueEnteredIntoTextBox という URL を要求するようになります。これにより、TextBoxValue という QueryString 変数が Second.aspx に渡されます。

次に、Second.aspx で、Label Web コントロールを 1 つ追加して、ID プロパティを「Results」に設定します。この Label Web コントロールに、1 つ目の Web フォームから渡される TextBoxValue QueryString 値を表示します。そのためには、まず、Second.aspx のソース コード部分を表示します (ソリューション エクスプローラで Second.aspx を右クリックし、[コードの表示] をクリックします)。ソース コード部分には、Page_Load というサブルーチンがあります。このサブルーチンは、ASP.NET Web ページが読み込まれるたびに必ず 1 回実行されます。したがって、ページ読み込みの際に実行するコードはここに配置します。ここでは、この Page_Load イベント ハンドラに次のコードを追加します。

Results.Text = Request.QueryString("TextBoxValue")

Request.QueryString() は、ページに渡された QueryString 変数の NameValueCollection です。特定の QueryString 変数の値に名前 (name) でアクセスするには、次の構文を使用します。 Request.QueryString("name")

次に、[デバッグ] メニューの [開始] オプションをクリックして、Web フォーム間の値の受け渡しを実際に見てみます。まず、ソース コードがコンパイルされて、Web ブラウザに First.aspx が表示されます。ページが表示されたら、テキスト ボックスに「Hello, World!」と入力し、ボタンをクリックします。ボタンをクリックすると、Second.aspx に移動します。その際に、エスケープ処理されたバージョンの "Hello, World!" ("Hello%2c+World!") が QueryString で渡されます。Second.aspx では、エスケープ処理されていないバージョンの QueryString 変数の値が Label Web コントロールに表示されます。結果の出力は、図 10 のようになります。

図 10. TextBoxValue QueryString 変数の表示

ある Web フォームから別の Web フォームに情報を渡すには他の方法もありますが、その詳細についてはこの記事の範囲を超えるため、ここでは紹介できません。

まとめ

ASP.NET による Web アプリケーション開発は、次第に従来の Windows デスクトップ アプリケーション開発に近づいてきています。ここでは、その類似点について説明しました。Visual Studio .NET で ASP.NET アプリケーションを作成する際には、デスクトップ アプリケーションを作成する場合と同様に、WYSIWYG デザイナで Web コントロールを使用してグラフィカル ユーザー インターフェイスを作成します。クラスによって構成される ASP.NET Web ページのソース コード部分は、このユーザー インターフェイスからは切り離されています。

デスクトップ アプリケーションと Web アプリケーションには数多くの類似点がある一方で、エンド ユーザーの全体的な エクスペリエンスの制約となる重要な違いもいくつかあります。最も大きな違いは、デスクトップ アプリケーションと Web アプリケーションの配布形態の違いによるものです。つまり、デスクトップ アプリケーションのさまざまなコンポーネントが、接続されたステートフルな状態で共存しているのに対し、Web アプリケーションのフロントエンドとバックエンドは物理的に分断されています。この分断が、Web サイトのユーザー インターフェイスの応答性の制約となっているほか、Visual Basic デスクトップ アプリケーションの開発ではごく簡単なタスクを Web 環境では非常に複雑なものにしています。

この記事を読んで ASP.NET に興味を持ち、ASP.NET の学習を続けようという方には、以下のリソースをお勧めします。

上の書籍と Web サイトは、ASP.NET 入門者にとって最適なリソースとなっています。このほか、ASP.NET に関する疑問を即座に解決できるすばらしい場もいくつかあります。オンライン フォーラムを利用している方は、ぜひ ASP.NET Forums (英語) を活用してください。このフォーラムは、あらゆるスキル レベルの ASP.NET 開発者を対象とする非常に活発なフォーラムです。メーリング リストの方を好まれる方には、ASPAdvice.com (英語) Non-MS link をお勧めします。ここでは、さまざまなテーマのメーリング リストに登録できます。

それでは、楽しいプログラミングを。

執筆者紹介

ASP/ASP.NET 関連の 5 冊の著書を持ち、GuysFromRolla.com の創設者でもある Scott Mitchell 氏は、過去 5 年間にわたって Microsoft の Web 技術に携わってきました。ASP/ASP.NET コミュニティのアクティブなメンバーである彼は、ASP と ASP.NET に情熱を傾けており、このすばらしい技術を学ぼうとしている人々を支援することを楽しみとしています。Scott 氏の著書、『ASP.NET Data Web Controls Kick Start』 (ISBN: 0672325012) では、DataGrid、DataList、Repeater などのコントロールが詳しく取り上げられています。