次の方法で共有


アプリケーション内で利用する共通のクラスを作成する方法

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

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

アプリケーション内の各ページで共通して利用するルーチンは、クラスとして 1 箇所にまとめておくと便利です。ASP.NET 2.0 は、このような用途のために App_Code フォルダという特別なフォルダを用意しています。

共通のデータアクセス ルーチンや、よく利用するアルゴリズムを、App_Code フォルダ内にクラスとして用意しておけば、特別な手続きなしにどのページからもアクセスできます。

今回は、次のようなページを作成します(図1) 。年月日を入力して、[曜日を求める] ボタンを押すと、その日が何曜日かを表示します。

 図

 図 1 今回作成するページ

次の手順でページを作成します。

  1. App_Code フォルダの作成

  2. クラスファイルの作成

  3. 各コントロールの配置

  4. [曜日を求める] ボタンのクリックハンドラを記述

  5. 実行

(1) App_Code フォルダの作成

最初に、App_Code フォルダを作成します。Visual Studio 2005 のソリューション エクスプローラ内で、仮想フォルダを右クリックし、ポップアップメニューから [ASP.NET フォルダの追加] - [App_Code] を選択します。App_Code フォルダが追加されます(図2)。

 図

 図 2 App_Code フォルダ

(2) クラスファイルの作成

App_Code フォルダ内に、日付から曜日を計算するクラスを作成します。ソリューション エクスプローラ内で、App_Code フォルダ右クリックし、ポップアップメニューから [新しい項目の追加] を選択します。「新しい項目の追加」ダイアログボックスで、「クラス」を選択し、ファイル名として「WeekClass.vb」を指定してください(図3)。App_Code フォルダ内に WeekClass.vb が追加されます。

 図

 図 3 クラスファイルの作成

作成したWeekClass.vb 内に、曜日を計算する関数を追加します。

Public Class WeekClass
    Public Function GetDayOfWeek(ByVal nYear As Integer, ByVal nMonth As Integer, ByVal nDay As Integer) As String
        Dim strDayOfWeek() As String = {"日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"}
        Dim zeller As Integer
        If nMonth < 3 Then
            nYear = nYear - 1
            nMonth = nMonth + 12
        End If
        zeller = (nYear + (nYear \ 4) - (nYear \ 100) + (nYear \ 400) + ((13 * nMonth + 8) \ 5) + nDay) Mod 7
        GetDayOfWeek = strDayOfWeek(zeller)
    End Function
End Class

リスト1 WeekClass.vb

WeekClass のメンバ関数 GetDayOfWeek は、年月日を受け取って、曜日を文字列で返します。曜日は、ツェラーの公式を使って計算しています。

(3) 各コントロールの配置

Default.aspx に、使用するコントロールを配置します。TextBox コントロール、Button コントロール、Label コントロールを次のように配置してください。

 図

 図 4 各コントロールの配置

各コントロールのプロパティは、次のように設定します。

コントロール

プロパティ

TextBox

ID

TextBoxYear

TextBox

ID

TextBoxMonth

TextBox

ID

TextBoxDay

Button

ID

YoubiButton

 

Text

曜日を求める

Label

ID

YoubiLabel

 

Text

(空白)

(4) [曜日を求める] ボタンのクリックハンドラを記述

[曜日を求める] ボタンを押したときのハンドラを記述します。Default.aspx.vb に次のコードを追加します。

Protected Sub YoubiButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles YoubiButton.Click
    Dim WeekObj As New WeekClass
    Dim youbi As String
    youbi = WeekObj.GetDayOfWeek(CInt(TextBoxYear.Text), CInt(TextBoxMonth.Text), CInt(TextBoxDay.Text))
    YoubiLabel.Text = TextBoxYear.Text + "年" + TextBoxMonth.Text + "月" + TextBoxDay.Text + "日は、" + youbi + "です。"
End Sub

リスト2 Default.aspx.vb

この中から、先ほど作成した WeekClass の GetDayOfWeek 関数を呼び出して、曜日の文字列を取得しています。

(5) 実行

実行してみます。年月日を入力し、[曜日を求める] ボタンを押すと、次のように曜日が表示されます。

 図

 図 5 実行したところ

このように、共通のルーチンを App_Code フォルダ内にクラスとして作成することができます。