10月6日(月)1コマ目

今日、やったこと

検索サイト作成

今日のホワイトボード

前期のASP.NET Core MVCのおさらいをしつつ、新ネタ(POSTコマンド)もやりました。

検索サイト構築

前期のASP.NET Core MVCは、クライアントがサーバーにリクエストする際、

下図左のように、

  • GETコマンドでリクエスト
  • リクエストするURLでサーバーのアクションメソッド呼び分け
  • リクエストするURLのクエリパラメータ(パスパラメータ)でデータ送信

 していた。

これを下図右のように、

  • POSTコマンドでリクエスト
  • データはクエリパラメータではなく、ボディ部で送信

するように改造する。

図 ASP.NET Core MVCでこれから作るアプリケーション


下図のような、アプリケーションを作成する。

図 作成するサンプルアプリケーション

Webフォーム

<form></form>のなかに、選択リスト(<select>タグ)や入力、選択(<input>タグ)、ボタン(<button>タグ)を配置。

図 Webフォーム

Webフォームは、ボタン(type=submit)をクリックすると、<form>タグの

  • method属性で指定したHTTPのコマンドで
  • action属性で指定したパスを

リクエストする。


POSTコマンドでリクエストすると

サーバー側は、まずコントローラが処理を行う。

このとき呼び出されるメソッドは、リクエストされるパスからコントローラ、メソッドが決まる。

さらに、POSTコマンドを処理するメソッドには、[HttpPost]アノテーションが付与されている必要がある。

図 POSTコマンドリクエストに対応するアクションメソッド


[設定ファイル]appsettings.json

DB接続に必要な接続文字列はここで設定。


[モデル]Models/Group.cs

CS_グループマスタテーブルに対応するクラス。


[モデル]Models/Item.cs

CS_商品マスタテーブルに対応するクラス。


[モデル]Data/SearchDbContext.cs

DbContext継承クラス。DBアクセスを担う。


[コントローラー]Controllers/SearchController.cs

[HttpPost]アノテーションが付与されたアクションメソッドはPOSTコマンド専用。


Program.cs

DI機能を使って、コントローラのコンストラクタ引数に渡すSearchDbContextクラスのインスタンス生成し、代入する。


[ビュー]Views/Search/Index.cshtml

検索条件に使うグループ一覧や、検索結果の商品一覧はコントローラからViewData経由でビューに渡される。


次回は

さらに新ネタViewModelを紹介。