情報応用演習Ⅰ(2024)

【T6a】検証メッセージのカスタマイズと集約表示(2/5)

プロジェクトタイプASP.NET Core Web アプリ(Model-View-Controller)
プロジェクト名T6a
ソリューション名PIT6
ターゲットフレームワーク.NET 8.0(長期的なサポート)
最上位レベルのステートメントを使用しない使用する(チェックオフ)

6a-2. 準備作業

まずは「ASP.NET Core Web アプリケーション」タイプのプロジェクトを作成しよう.上表に示すように, プロジェクト名はT6a,ソリューション名はPIT6とする.ターゲットフレームワークとして「.NET 8.0(長期的なサポート)」を選択し, 「HTTPS用の構成」のチェックを外すこと,また「最上位レベルのステートメントを使用しない」にチェックが入っていない ことを確認しよう.

今回は復習を兼ねて以下の一通りの準備作業を自力で行ってみよう

  • 【作業Ⅰ】 作業対象:プロジェクト T6a
  • 【作業Ⅱ】 作業対象:プロジェクト T6a
  • 【作業Ⅲ】 作業対象:プロジェクト T6a
    • このプロジェクトで使用するデータコンテキストクラスT6aContextを定義する.
  • 【作業Ⅳ】 作業対象: Views/Shared/_Layout.cshtml (ファイル)
    • レイアウトページの簡易化(リスト4a-4-2)
      • ページタイトル部分に T6a という文言を入れ,サイトタイトル(h1要素の内容)をチュートリアルT6aに変更する.
  • 【作業Ⅴ】 作業対象: wwwroot/css/site.css (ファイル)
    • スタイル指定body { padding: 1em; }を追記する(参考:リスト4a-4-4).
  • 【作業Ⅵ】 作業対象:pgAdmin(データベース)
    • 接続ユーザーの作成(参考:リスト5a-4-2)
      • このアプリでは_の設定で接続するようにする.
  • 【作業Ⅶ】 作業対象: appsettings.json (ファイル)
  • 【作業Ⅷ】 作業対象:Homeコントローラー&ビュー
  • 【作業Ⅸ】 作業対象: Program.cs (ファイル)
    • 検証メッセージの日本語化(参考:リスト4a-7-1)
    • アクセスエラーページの有効化(参考:リスト4b-6-5)
    • データコンテキストに対する接続文字列の読み込み(参考:リスト5a-4-4リスト5a-4-6)
    • URLルーティングのデフォルトのコントローラーをScoreRecordsコントローラー(後述)に変更する(参考:リスト1c-4-2)
  • 【作業Ⅹ】 作業対象:コマンドラインターミナル(開発用PowerShell,Visual Studio 上)
    • 最初のマイグレーションの作成(マイグレーション名はInitialDB)とデータベースへの反映(参考:リスト5a-5-1)
「スコア」の情報
項目名(表示名)実際のプロパティ名必須/任意データ型備考
IDId必須整数その記録のID.
名前Name必須文字列スコアネーム.
スコアScore必須整数得点.0点以上999999999点以下
記録日時Recorded必須日付時刻そのスコアをシステムに登録した日時(時刻含む).
データベースの接続設定
項目
接続先localhost
ポート5432
ユーザー名t6a_user
データベース名t6a_db
パスワード7T@6x!mHBA
どうしてもわからない場合,あるいは答え合わせ

ここまでのチュートリアルの内容を十分に理解していればできるはずである.すぐに正解を見ようとせずに まずは自力で調べどのような作業が必要かを考えて行ってみよう.答え合わせをしたい場合は以下を開くとよい.

【作業Ⅰ】
【作業Ⅰ】

NuGetを使って以下のパッケージを探してプロジェクトにインストールする. バージョンが選択可能な場合は「 最新の安定板 」を選択するのを忘れないようにしよう.

パッケージソースパッケージ名本校執筆時[^98]の安定版
nuget.orgMicrosoft.EntityFrameworkCore.Design8.0.2
Npgsql.EntityFrameworkCore.PostgreSQL8.0.2
Npgsql.EntityFrameworkCore.PostgreSQL.Design1.1.0
knzw.techKnzwTech.AspNetCore.ResourceBasedLocalization.ja6.0.1
【作業Ⅰ】 : 閉じる
【作業Ⅱ】
【作業Ⅱ】

チュートリアル【T4a】チュートリアル【T5a】を参考に _の情報を含むモデルクラスを定義する.プロジェクトの Models フォルダ内に新規にクラスを追加し, _に示すScoreRecordクラスを定義する.

ScoreRecordクラス
【作業Ⅱ】 : 閉じる
【作業Ⅲ】
【作業Ⅲ】

チュートリアル【T5a】を参考にこのプロジェクトで使用する データコンテキストクラスを作成する. プロジェクトに Data という名前のフォルダを追加し,その中に_のクラス定義を追加する.

データコンテキストクラス
【作業Ⅲ】 : 閉じる
【作業Ⅳ】
【作業Ⅳ】

チュートリアル【T4a】を参考に以下のことを行う.

  • Views/Shared/_Layout.cshtml をリスト4a-4-2に示すように変更する.
  • ↑の5行目の T4aT6a に変更し,@* サイトタイトル *@の部分を チュートリアルT6a に変更する.

正しく編集すると_のようになる.

Views/Shared/_Layout.cshtmlの変更内容
【作業Ⅳ】 : 閉じる
【作業Ⅴ】
【作業Ⅴ】

wwwroot/css/site.css の末尾に_を追記する.

wwwroot/css/site.cssの追記内容
【作業Ⅴ】 : 閉じる
【作業Ⅵ】
【作業Ⅵ】

pgAdmin を起動し,「 Servers 」→「 PostgreSQL 16 」→「 Databases 」に表示される データベースの一覧から 「 postgres 」を右クリックし「 Query Tool 」をクリックし,_に示すSQL文を実行する.

ユーザー作成のためのSQL文
【作業Ⅵ】 : 閉じる
【作業Ⅶ】
【作業Ⅶ】

チュートリアル【T5a】を参考に appsettings.json に _に示す内容を追記する.

appsettings.jsonの編集結果
【作業Ⅶ】 : 閉じる
【作業Ⅷ】
【作業Ⅷ】

チュートリアル【T4b】を参考に以下のことを行う.

  • Homeコントローラーにリスト4b-6-3のアクションメソッドAccessErrorを追記する.
  • プロジェクト内の Views フォルダの Home フォルダに新規にAccessError(.cshtml)という名前のビューを追加し,リスト4b-6-4の内容を書き込む

正しく編集すると Controllers/HomeController.cs は_, Views/Home/AccessError.cshtml は_のようになる.

Homeコントローラーの変更内容
Views/Home/AccessError.cshtmlの内容
【作業Ⅷ】 : 閉じる
【作業Ⅸ】
【作業Ⅸ】

チュートリアル【T4a】チュートリアル【T4b】チュートリアル【T5a】チュートリアル【T5b】を参考に Program.cs を編集する.正しく編集すると_のようになる.

Program.csの編集結果
【作業Ⅸ】 : 閉じる
【作業Ⅹ】
【作業Ⅹ】

Visual Studio 上でコマンドラインターミナル(「開発用PowerShell」)を開き_に示すコマンドを実行する. このコマンドを実行する前にカレントディレクトリを,操作対象のプロジェクトのプロジェクトフォルダに変更しておく ことを忘れないようにしよう(つまりあらかじめcd プロジェクト名を実行しておく).

このコマンドを実行する前に一度以上プロジェクトをビルドしておく必要がある.また,ソリューションに含まれるプロジェクトに1つでもコンパイルエラーがあるとこのコマンドは失敗することがある.このためこのコマンドを実行する際は,事前にソリューション全体を一度ビルドして一つもコンパイルエラーがないことを確認しておくこと.

マイグレーション処理の生成と実行
【作業Ⅹ】 : 閉じる
どうしてもわからない場合,あるいは答え合わせ : 閉じる

ここまでを済ませてプロジェクトを起動してみよう.以下の2点を確認しておこう.

  1. pgAdmin で,実際にデータベース t6a_db が作られており ScoreRecords テーブルが作成されていること(_).
  2. 起動すると404 Not Foundのアクセスエラーが表示されること(_).
データベースの確認とプロジェクトの実行結果

以上を確認したら次へ進もう.

Last updated on 2024-06-10
Published on 2024-06-10

Powered by Hugo. Theme by TechDoc. Designed by Thingsym.