アプリを小さな機能グループに分割することで、開発の見通しが良くなります。この時に利用するのが、Areaです。Areaは一つのWebアプリケーションを複数の区分に分割するASP.NET Coreが提供する機能です。
Areasフォルダを作成する
Areaを利用するには、まず、プロジェクトフォルダ直下に Areasフォルダを作成します。
すでに作成済みの場合は、スキップ。
エリア名となるフォルダを作成する
このAreasフォルダの下に、エリア名となるフォルダを作成します。
例えば、エリア名を Operation としたい場合は、Areasフォルダの下に Operation フォルダを作成します。
そして、その下に Pages フォルダを作成します。
Areas
Operaion
Pages
上のようなフォルダ構造になります。
_ViewImports.cshtml と _ViewStart.cshtmlを作成
次に上記Pagesフォルダ直下に、_ViewImports.cshtml と _ViewStart.cshtml の2つのファイルを作成します。
_ViewImports.cshtml の例を示します。(プロジェクト名が MyWebAppの場合)
@using Microsoft.AspNetCore.Identity
@using MyWebApp
@using MyWebApp.Data
@namespace MyWebApp.Areas.Operation.Pages
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
Viewで利用する名前空間が他にもあれば、@usingで追加します。
以下、_ViewStart.cshtml の例です。
@{
Layout = "/Pages/Shared/_LayoutOperation.cshtml";
}
ここでは、_Layout.cshtmlではなく、別のテンプレートを使うように指定しています。UIのレイアウトを別のものにしたい場合は、この機能を使うと便利です。
/Areas/Operation/Pages/Shared/ の下に、_Layout.cshtml をおいても良いです。これは好みの問題かな。
ページとページモデルを作成する
Areas/Operaion/Pages の下に、.cshtml と .cshtml.cs を作成します。
これは、特筆すべき点はありません。今までの通りViewとページモデルを定義すれば良いだけです。
これで、Areaが扱えるようになります。
AreaのURLルーティング
ルーティングは、階層構造がそのまま利用されます。
例えば、/Areas/Operaion/Pages/List.cshtml の場合は、
https://localhost:5001/Operation/List
になります。(URLには、AreasとPagesは含まれません)