この資料は、VB.NETとASP.NET Web Formsを使用してWebアプリケーションを開発するための基礎知識を提供します。Web Formsの基本的な概念から、プロジェクトの作成、コントロールの利用、イベント処理、データアクセスまでを分かりやすく解説します。
ASP.NET Web Formsは、Microsoftが提供するWebアプリケーションフレームワークの一部であり、デスクトップアプリケーション開発のような感覚でWebアプリケーションを構築できることを目指しています。特に、GUIツールによるドラッグ&ドロップ操作でWebページを設計できる点が特徴です。
TextBox
、Button
、GridView
などのHTML要素を抽象化したコントロールを使用します。これらはサーバーサイドで処理され、最終的にHTMLとしてクライアントに送信されます。知っておくべきこと: ASP.NET Web Formsは現在、新しい大規模なWebアプリケーション開発ではあまり推奨されていません。MicrosoftはBlazorやASP.NET Core MVCといった、よりモダンなフレームワークに注力しています。しかし、既存のWeb Formsアプリケーションの保守や、シンプルな社内ツール開発などでは依然として活用されています。
VB.NET Web Formsの開発には、Visual Studioが必要です。
ヒント: Visual Studio Community Editionは、個人利用や小規模なチームであれば無料で利用できます。
Visual Studioを使って新しいWeb Formsプロジェクトを作成する手順です。
プロジェクトが作成されると、Visual Studioのソリューションエクスプローラーに様々なファイルが表示されます。
.aspx
: Webページのデザイン(HTMLとサーバーコントロールのマークアップ)を記述するファイルです。.aspx.vb
: 各.aspx
ファイルに対応するサーバーサイドのVB.NETコードを記述するファイルです(コードビハインドファイル)。Web.config
: アプリケーション全体の構成設定(データベース接続文字列、認証設定など)を記述するファイルです。Web Formsの基本的な構成要素であるWebページとサーバーコントロールについて学びましょう。
Default.aspx
)。作成された.aspx
ファイルを開くと、HTMLと、サーバーコントロールを配置するためのデザインビューが表示されます。
ツールボックスからドラッグ&ドロップでWebページに配置できるコントロールです。これらはサーバーサイドで処理され、最終的にブラウザで表示されるHTMLに変換されます。
<%@ Page Language="VB" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="MyWebApp.Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>はじめてのWeb Forms</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="あなたの名前を入力してください:"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="挨拶" />
<br />
<asp:Label ID="ResultLabel" runat="server"></asp:Label>
</div>
</form>
</body>
</html>
<%@ Page ... %>
: ページディレクティブで、ページの言語、コードビハインドファイルなどを指定します。runat="server"
: これがサーバーコントロールであることを示します。この属性がないと、ただのHTML要素として扱われます。ID="..."
: コードビハインドファイルからコントロールを参照するための識別子です。<asp:Label>
: HTMLの<label>
や<span>
に変換されます。<asp:TextBox>
: HTMLの<input type="text">
に変換されます。<asp:Button>
: HTMLの<input type="submit">
に変換されます。Web Formsでは、ユーザーの操作(ボタンクリックなど)をイベントとして捉え、それに対応するサーバーサイドのVB.NETコードを実行します。
先ほどのDefault.aspx
の例で、ボタンがクリックされたときに名前を表示する処理を追加しましょう。
Default.aspx
のデザインビューでButton1
をダブルクリックします。Default.aspx.vb
ファイルが開き、Button1_Click
というイベントハンドラが自動的に生成されます。' Default.aspx.vb (コードビハインドファイル)
Public Class Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
' ページが最初にロードされたとき(初回アクセス時)と
' ポストバック(ページの再読み込み)時に実行される
If Not IsPostBack Then
' 初回ロード時のみ実行したい処理
ResultLabel.Text = "" ' 初期化
End If
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
' Button1がクリックされたときに実行される
Dim userName As String = TextBox1.Text
If String.IsNullOrEmpty(userName) Then
ResultLabel.Text = "名前が入力されていません。"
Else
ResultLabel.Text = "こんにちは、" & userName & "さん!"
End If
End Sub
End Class
Page_Load
イベント: ページがロードされるたびに(初回アクセス時とポストバック時)実行されます。
IsPostBack
プロパティは、ページが初回ロードされたのか、それともポストバックによって再ロードされたのかを判断するために使われます。初回ロード時のみ実行したい処理はIf Not IsPostBack Then ... End If
ブロック内に記述します。Button1_Click
イベント: Button1
がクリックされたときに実行されます。
TextBox1.Text
)。Handles
キーワード: VB.NETでは、イベントハンドラの定義にHandles
キーワードを使い、どのイベントを処理するかを指定します。例: Handles Button1.Click
Web Formsでは、データベースや他のデータソースから取得したデータをサーバーコントロールに表示する「データバインディング」機能が豊富に用意されています。
GridView
コントロールは、表形式のデータを表示するための非常に強力なコントロールです。ここでは簡単な例を示します。
<!-- Default.aspx -->
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="True"></asp:GridView>
' Default.aspx.vb
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
' データを作成
Dim dt As New DataTable()
dt.Columns.Add("ID", GetType(Integer))
dt.Columns.Add("名前", GetType(String))
dt.Columns.Add("年齢", GetType(Integer))
dt.Rows.Add(1, "田中", 25)
dt.Rows.Add(2, "佐藤", 30)
dt.Rows.Add(3, "鈴木", 28)
' GridViewにデータをバインド
GridView1.DataSource = dt
GridView1.DataBind()
End If
End Sub
AutoGenerateColumns="True"
: データソースの列に基づいて、自動的に列が生成されます。DataSource
プロパティ: 表示するデータソース(DataTable
, List(Of T)
など)を設定します。DataBind()
メソッド: 設定したデータソースをコントロールにバインドし、UIを更新します。より高度なデータバインディングでは、SqlDataSource
やObjectDataSource
などのデータソースコントロールを使用したり、カスタムテンプレート列を定義したりすることも可能です。
Web Formsアプリケーション内でページ間を移動する方法はいくつかあります。
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/About.aspx" Text="会社概要ページへ"></asp:HyperLink>
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
Response.Redirect("~/Contact.aspx") ' Contact.aspxへリダイレクト
End Sub
~/
は、アプリケーションのルートディレクトリを表します。
Protected Sub Button3_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button3.Click
Server.Transfer("~/AnotherPage.aspx")
End Sub
Webアプリケーションはステートレス(状態を持たない)ですが、Web Formsはユーザーやセッションの状態を維持するための様々なメカニズムを提供します。
<input type="hidden">
)としてページ内に埋め込まれます。Session("UserName") = TextBox1.Text ' データを保存
Dim name As String = Session("UserName") ' データを取得
Response.Cookies("LastVisit").Value = DateTime.Now.ToString() ' クッキーに保存
Response.Cookies("LastVisit").Expires = DateTime.Now.AddDays(7) ' 7日間有効
Dim lastVisit As String = Request.Cookies("LastVisit")?.Value ' クッキーから取得
Application("VisitorCount") = CInt(Application("VisitorCount")) + 1 ' データを保存
Dim count As Integer = Application("VisitorCount") ' データを取得
セキュリティ上の注意: セッション状態やアプリケーション状態に機密性の高い情報を保存する際は、セキュリティ対策を講じる必要があります。また、クッキーに保存するデータはクライアント側で変更される可能性があるため、信頼性の低いデータとして扱うべきです。
開発したWeb FormsアプリケーションをWebサーバーに配置する手順です。
ヒント: 小規模なアプリケーションや開発段階では、Visual Studioの「デバッグ開始」ボタン(IIS Expressを使用)で手軽に動作確認できます。
この資料でWeb Formsの基本的な開発手法を学びました。さらに学習を進めるためのヒントをいくつかご紹介します。
SqlConnection
, SqlCommand
など) を使用してデータベースと連携する方法を学びましょう。RequiredFieldValidator
, RangeValidator
などのコントロールを使用して、フォーム入力の検証をクライアントサイドで行いましょう。Web Formsは、Microsoftの.NETエコシステムにおけるWeb開発の歴史の一部であり、多くの既存システムで使われています。これらの基礎を学ぶことは、既存システムを理解し、保守する上で非常に役立ちます。