11月18日(木)3、4コマ目
前回の練習問題
異常時対応にフォーカスしたユーザー登録アプリケーションを作ってもらいました。
ソースをあげておきます。
RegistUserResultEnum(列挙型)
ユーザー登録の結果を通知するための列挙型。
UserDAOクラス
IDが重複した(主キー制約違反)、紹介者がいない(参照整合性制約違反)等が発生すれば、例外がスローされます。スローされた例外のNumberプロパティでエラーコードが確認し、発生エラーに応じた戻り値を返します。
Serviceクラス
RegistUser()メソッドでは、UserDAOのInsert()メソッドを呼び出しています。
例外がスローされたとき(通知しても仕方がないエラーが発生したとき)、OracleExceptionから一般的な実行時例外のApplicationExceptionに変更してスローしています。
Index.cshtml
ここは特に問題ないかと。
Index.cshtml.cs
OnPost()メソッドで入力チェックを行っています。
| 図 入力チェック |
〇空白チェック
stringクラスのIsNullOrEmpty()メソッドは引数がnullまたは空白のときにtrueを返します。
stringクラスには空白チェック用メソッドが下表にように用意されています。
| メソッド | 役割 |
|---|---|
| public static bool IsNullOrEmpty(string? value) | 引数valueがnullまたは空の文字列("")ならtrue、それ以外ならfalseを返す。 |
| public static bool IsNullOrWhiteSpace(string? value) | 引数valueがnullまたは空白文字列(""だけでなく" "など)ならtrue、それ以外ならfalseを返す。 |
〇数値以外が入力された
ユーザーIDや紹介者ID入力欄に数値以外が入力された場合のチェック。
intクラスのParse()メソッドは整数へ変換できない場合はFormatExceptionをスローします。
そもそも、入力欄は type="number" にすることもお忘れなく。
課題「簡単オークションサイト(C#)」補足情報
[データベース]テーブルの列の初期値
| 図 列の初期値 |
ページ遷移
いままで1ページだけでしたが、今回は3ページあります。
ページの移動(ページ遷移)方法はいろいろありますが、とりあえず必要なRazorページへリダイレクトする方法だけ紹介します。
ServiceクラスのAuthenticate()メソッド
Serviceクラスはシステムに必要な機能を提供するクラス。
DAOクラスはその機能実現のために必要なDBアクセス機能を提供するだけ。
DAOクラスでは認証は行わない!!
| 図 ServiceクラスのAuthenticate()メソッド(認証用メソッド) |
スローされた例外は
基本的にキャッチしない。
最終的に~.cshtml.csでキャッチ、エラーメッセージを表示すること。
| 図 例外スロー時の処理 |
締め切り情報
12月6日(月)4コマ目終了時。