8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ASP.NET Core Razor PagesでAreaを利用する

Posted at

アプリを小さな機能グループに分割することで、開発の見通しが良くなります。この時に利用するのが、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は含まれません)

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?