PROGRAM VISUALBASIC

ASP.NET(VB.NET) MVCモデル入門~Try-Catchを使ったエラー処理

Try~Catch文を使ってエラー処理を追加したプログラム

今回は、ログイン画面を作成して、Try~Catch文を使ったエラー処理を追加します。
ログイン画面のイメージは、以下のようになります。

vbmvc19-1
ログイン画面

Try~Catch文に関する内容は、以下のマイクロソフトの公式サイトを参照してください。

新規プロジェクトの作成

新規にプロジェクトを作成します。
今回のサンプルプログラムでは、プロジェクト名を「Test7」として作成します。
プロジェクトの作成方法は、こちらの記事を参照してください。

データベースの作成

今回のプロジェクトで使用するデータベースを作成します。
データベースは、Visual Studio付属の「SQL Server Express LocalDB」を使用します。
データベースの作成方法は、こちらの記事を参照してください。
データベースの仕様は、以下の通りです。
IDをプライマリーキーとして、1001から始まる自動採番とします。

データベースの仕様

  • データベース名:TestDb
  • テーブル名:Account
名前データ型Nullを許容その他
IDintNOT NULLIDENTITY (1001, 1)
Namenvarchar(20)NOT NULL
Passwordvarchar(20)NOT NULL
Accountテーブル

Accountテーブルのデータも、あらかじめインサートしておきます。
メニューバーの「ツール」→「SQL Server」→「新しいクエリ」で、クエリ画面から以下のSQL文を使ってデータをインサートします。

データ

insert into Account values(N'山田太郎','password1234');
insert into Account values(N'鈴木花子','password5678');

ADO.NET Entity Data Modelの作成

データベースを作成したら、VB.NETとデータベースを接続するために、ADO.NET Entity Data Modelを作成します。
モデル名は、「TestDbModel」とします。
ADO.NET Entity Data Modelの作成方法は、こちらの記事を参照してください。

Accountクラスにアノテーションを追加

自動で作成されたAccountクラスの各プロパティに、アノテーションを追加します。
ログイン画面で入力するIDとパスワードは必須項目なので、Required()を指定します。

データベース操作用クラスの作成

データベースを操作するためのクラスを、「DbModel.vb」という名前で、「Data」フォルダーの配下に作成します。
「Data」フォルダーは、あらかじめ作成しておきます。
検索結果は0件か1件になるので、SQLQuery()メソッドにFirstOrDefault()メソッドを指定します。
FirstOrDefault()メソッドの代わりにFirst()メソッドを使った場合は、検索結果が0件だと例外が発生します

ログイン画面用コントローラーの作成

ログイン画面用のコントローラーを作成します。
Try~Catch文を使って、エラー処理を実装します。
Tryブロックの中で例外が発生すると、Catchブロックの処理を実行します。
Catchブロックの中でErrorコントローラーのSystemメソッドを呼び出します。

ログイン画面用ビューの作成

ログイン画面用のビューを作成します。
HTMLヘルパーのValidationMessageFor()メソッドを使って、未入力だった場合の処理を行います。
未入力時の処理に関しては、こちらの記事も参照してください。

表示レイアウトの編集

ビューを作成すると、自動的に「Views/Shared/_Layout.vbhtml」が作成されるので、これを以下のように編集します。

ログイン完了画面用コントローラーの作成

ログイン完了画面用のコントローラーを作成します。

ログイン完了画面用ビューの作成

ログイン完了画面用のビューを作成します。

エラー画面用コントローラーの作成

Tryブロックの中で例外が発生した時に呼び出されるコントローラーを作成します。

エラー画面用ビューの作成

Tryブロックの中で例外が発生した時に呼び出されるビューを作成します。

スタイルシートの修正

このプロジェクトで使用するスタイルシート(Site.css)を修正します。
field-validation-errorクラスとinput-validation-errorクラスは、HTMLヘルパーのValidationMessageFor()メソッドで使用します。

RouteConfigの修正

RouteConfig.vbを修正して、ルートページをログイン画面になるように変更します。

プログラムの実行

以下に、画面の表示パターンを提示します。

    必須項目未入力

    ログイン画面で必須項目が未入力だった場合は、以下のようにテキストボックスの色がピンクになり、テキストボックスの横にエラーメッセージが表示されます。

    vbmvc19-2
    必須項目未入力

    IDまたはパスワード相違

    IDまたはパスワードが間違っている場合は、以下のようにログインボタンの下に、エラーメッセージが表示されます。

    vbmvc19-3
    IDまたはパスワード相違

    例外発生

    Try~Catch文で例外が発生した場合は、以下の画面が表示されます。
    例外の出し方はいくつかありますが、今回はDbModelクラスの13行目を、FirstOrDefault()からFirst()に変更して実行し、ログイン画面で存在しないID、パスワードを入力することによって、例外を発生させています。

    vbmvc19-5
    エラー画面

    正常画面

    正常にログインした場合は、以下の画面が表示されます。

    vbmvc19-4
    ログイン完了

    -PROGRAM, VISUALBASIC
    -, ,