Web Matrixで始めるWebアプリ・プログラミング

第2回 Web MatrixによるASP.NET開発の基礎

山田 祥寛
2004/01/31

Page1 Page2 Page3

(4)コードを記述する

 コントロールの配置ができたら、実際にユーザーからのアクションを受け取ったときの処理内容を記述してみよう。冒頭で述べたように、このアプリケーションでは[OK]ボタンをクリックしたら、LabelコントロールにTextBoxコントロールの内容を加工して表示することとする。

 フォーム・デザイナ上からButtonコントロールをダブル・クリックしてみよう。すると、コード・エディタ([Code]モード)が開き、btnClick_Clickイベント・プロシージャにカーソルがセットされているはずだ。btnClick_Clickイベント・プロシージャは、その名前からも容易に推察できるように、ButtonコントロールbtnClickがクリックされたタイミングで呼び出される。

自動生成されたbtnClick_Clickイベント・プロシージャ
該当するコントロールをダブル・クリックすることで、デフォルトのイベント・プロシージャが生成される。

 Web Matrixは、このようにフォーム・デザイナ上でコントロールをダブル・クリックすることで自動的にデフォルトのイベント・プロシージャを生成してくれる。もしもデフォルトとは異なるイベント・プロシージャを生成したい場合には、プロパティ・ウィンドウから対象となるコントロールを選択し、[イベント]ボタンをクリックする。プロパティ・ウィンドウ上にイベントの一覧がリストアップされるので、該当するイベント名をダブル・クリックすることによって、同様に該当するイベント・プロシージャが自動生成される。

[プロパティ]ウィンドウ
プロパティ・ウィンドウからイベントも一覧表示できる。特に、Pageクラスのイベント・プロシージャを生成する場合、ここから行うと便利だ。
  イベントの一覧をリストアップする[イベント]ボタン

 特に頻繁に使用するPage_Loadイベント・プロシージャを生成するには、上記の方法を用いる必要があるので、よく覚えておいてほしい。ちなみに、VS.NETではフォーム・デザイナ上から何も選択しない状態でページをダブル・クリックすれば、Page_Loadイベント・プロシージャを生成することができた。

[参考]
 VS.NETでは、イベント・プロシージャの末尾に、以下のようなHandlesキーワードが自動で付加されていた。VS.NETではサーバ・コントロールとイベント・プロシージャとのひも付けを、このHandlesキーワードによって行っていた。

Sub btnClick_Click(sender As Object, e As EventArgs) Handles btnClick.Click

  一方で、Web Matrix上ではサーバ・コントロール上のイベント・ハンドラ(onclick属性など)で、関連付けを行っている。[HTML]モード(または[All]モード)で<asp:Button>コントロールの記述が以下のようになっていることを確認してほしい。

<asp:Button id="btnClick" onclick="btnClick_Click" ...

  この事実は、何も考えずにIDEの挙動に従う限りにおいては、ユーザーが何ら意識する必要のないポイントであるが、後々にVS.NETでの開発に移行する場合に留意すべき点でもある。ぜひ、心の片隅に留めておいてほしい。

 それでは、この自動生成されたコードに、以下のようにコードを追記してみよう。

Private Sub btnClick_Click(sender As Object, e As EventArgs)
  lblDisp.Text = "Hello, " & txtNam.Text & "!!"  ' ←この行を追加
End Sub

 <asp:TextBox>タグで記述されるTextBoxコントロール(id属性は「txtNam」)のTextプロパティは、テキスト・ボックスに入力されたテキストの値を表す。また、<asp:Label>タグで記述されるLabelコントロール(id属性は「lblDisp」)のTextプロパティは、ラベルに表示されるテキストの値である。つまり、ここではテキスト・ボックスに入力された文字列から「Hello, XXXXX!!」という文字列を生成し、LabelコントロールのTextプロパティにセットすることで、テキスト・ボックスの値をラベルに反映させているのだ。

 ASP.NETプログラミングでは、このようにコントロールに属するプロパティ(あるいはメソッド)をコード上から動的に操作するのが基本となる。各コントロールが実装しているプロパティやメソッドについては、[Classes]ウィンドウや「.NET Framework SDKドキュメント」などから確認できる。

(5)完成したページを確認する

 コードの編集が完了したら、ツール・バーの[>](Start)ボタン、またはメニューから[View]−[Start]を選択してみよう。すると、[Start Web Application]ダイアログが起動する。

[Start Web Application]ダイアログ
このダイアログからWeb Matrix内蔵のWebサーバを起動できる。ポート番号(Application Port)はサーバ上で未使用のものを指定しないと、正常に起動することができないので注意すること。
  アプリケーションのルート・ディレクトリ。通常は現在編集中のページが属するアプリケーション・ルートがセットされているため、変更の必要はない。
  Web Matrixに内蔵されているWebサーバを利用する場合にはこちらを選択。ポート番号はデフォルトで「8080」であるが、Proxyサーバなどとの衝突を防ぐため、本稿では仮に「81」としておく(未使用のポートであれば何番でも構わない)。
  IISサーバを使用する場合にはこちらを選択。作成する仮想ディレクトリ名と、アプリケーション配下のディレクトリ情報を参照可能にするかを選択できる。
  [Start]ボタンをクリックすると、Web Matrix内蔵のWebサーバが起動する。

 このダイアログからWeb Matrix内蔵のWebサーバ(以下「Web Matrixサーバ」)を起動できる。起動にあたっての設定項目については、上の画面の内容とその説明を参考にしていただきたい。

 Windows XP Home Editionのユーザーを除いては、IISサーバを使用しても構わないが(XP Home EditionにはIISが含まれていないため)、本稿ではより軽量のWeb Matrixサーバを利用してみることにしよう。[Start]ボタンをクリックすると、タスク・バーに「Microsoft ASP.NET Web Matrix Server」のアイコンが追加され、同時にWebブラウザには編集中ページの実行結果が表示されるはずだ。

 Web Matrixサーバは仮想ディレクトリなどの概念を一切持たないデバッグ用途に特化したサーバだ。従って、URLも

http://localhost:81/ファイル名

という単純な形式となる。もしも異なるプロジェクトのファイルを参照したい場合には、Web Matrixサーバをいったん停止し、先ほどの[Start Web Application]ダイアログでApplication Directoryを変更する必要がある。Web Matrixサーバは二重起動できないので注意すること。Web Matrixサーバの停止には、タスク・バーのアイコンを右クリックし、そこで表示されるコンテキスト・メニューの中から[Stop]を選択すればよい。

[参考]
 ブラウズ対象のWebページの中でエラーが発生した場合も、Web Matrix自体は特別な処理を返さない。これは、第1回でも紹介したように、Web Matrixがデバッグ機能を持たないためだ。発生したエラーはすべてASP.NETのエラーとしてWebブラウザ上に表示される。

 もしもブラウザ上に詳細なエラーが表示されない場合には、Webアプリケーションのプロジェクト上にweb.configを設置し、以下の記述を行う必要がある。これによって、詳細なエラー・トレースが表示される。

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
  <system.web>
    <customErrors mode="RemoteOnly" />
  </system.web>
</configuration>
詳細なエラー・トレース表示のためのweb.configの記述

  デバッグ・モードなどもないため、ブラウジングの結果を見つつ、コードを修正していけばよい(VS.NETのように、ブラウザを一度閉じる必要はない)。ただし、変更するたびに、コードを[保存]することを忘れないように。VS.NETはデバッグ・モード移行時に未確定のコードをすべて保存してくれるが、Web Matrixではそうした機能はない。


 また、VS.NETにあるウォッチ式のようなデバッグ機能を使用したい場合には、その代替手段として、ASP.NETの標準的なトレース機能を利用するとよいだろう。ここでは詳細は割愛するが、要はWeb Matrixにおけるデバッグはすべて「テキスト・エディタを使用している場合と同様、ASP.NET標準の機能を利用する必要がある」ということだ。もっとも、著者にはそれが必ずしも不便なこととは思われない。Web Matrixがなまはんかなデバッグ機能を実装する必要がないほど、ASP.NETのデバッグ機能が充実しているためだ。

まとめ

 今回は基本的なサーバ・コントロールを使用して、Web Matrixを利用したASP.NETアプリケーション構築の大まかな流れを、基本的な「Hello, XXXX!!」アプリケーションを例として解説した。次回は、データベース連携アプリケーションとXML Webサービスの構築を例に、引き続きWeb MatrixによるASP.NETアプリケーションの構築について解説する。End of Article


 INDEX
  Web Matrixで始めるWebアプリ・プログラミング
  第2回 Web MatrixによるASP.NET開発の基礎
    1.プロジェクトの新規作成
    2.Webフォームの設置とコントロールの配置
  3.コードの記述と完成したWebページの確認
 
インデックス・ページヘ  「Web Matrixで始める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 記事ランキング

本日 月間