ASP.NET Core MVC - ビューの基底クラスを変更する

ASP.NET Core MVCのビュー全体で、プロジェクト独自のプロパティやメソッドを追加して利用したいことがあるかなと思います。

デフォルトでは、ビューはMicrosoft.AspNetCore.Mvc.Razor.RazorPage<TModel>を継承しています。このクラスを派生したクラスを用意することで実現できます。

詳しくはこのあたり。

ASP.NET Core の Razor 構文リファレンス | Microsoft Docs

上記ドキュメントそのままなんですが、覚え書きとしてメモしておきます。

まずRazorPage<TModel>を継承した独自のRazorページクラスを用意します。

// プロジェクト独自のRazorページクラス
public abstract class CustomRazorPage<TModel> : RazorPage<TModel> {
    // 独自のプロパティやメソッドを追加したい
    public int CustomValue { get; set; }
}

つぎに@inheritsディレクティブを使って、用意したRazorページクラスを継承するようにします。プロジェクト全体でビューの基底クラスを変えるには、Viewsフォルダ直下の_ViewImports.cshtmlで指定します。

@* _ViewImports.cshtml *@
@* ビューの基底クラスを変更する *@
@inherits CustomRazorPage<TModel>

すると、各cshtmlでカスタムRazorページのプロパティやメソッドが使えるようになります。

@* 各cshtml *@
@* 独自のプロパティが使えるようになる *@
@CustomValue