_Imports.razor ファイルを作成して @using を集約する

_Imports.razor ファイルを作成して @using を集約する方法を紹介します。

概要

こちらの記事では、razorファイルそれぞれに@using ディレクティブを記述し必要な参照を追加しました。 ASP.NET Coreでは _Imports.razor ファイルを作成すると、各razorファイルに_Imports.razor ファイルに記述した内容を埋め込むことができます。

こちらの記事のプロジェクトでは、App.razor と Index.razor ファイルは下記の記述です。
App.razor
@using System.Net.Http
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.Authorization
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.JSInterop

<Router AppAssembly="@typeof(Program).Assembly">
<Found Context="routeData">
    <RouteView RouteData="@routeData" />
</Found>
<NotFound>
    <LayoutView>
        <p>Sorry, there's nothing at this address.</p>
    </LayoutView>
</NotFound>
</Router>
Index.razor
@page "/"
@using Microsoft.AspNetCore.Components.Web

<h3>Index</h3>
<div>
    <button class="" @onclick="ButtonClick">Button1</button>
    <p>@messageText</p>
</div>
@code {
    string messageText;

    void ButtonClick()
    {
        messageText = "My Button Clicked";
    }
}
このプロジェクトで、_Imports.razorファイルを作成すると下記の記述にできます。

_Imports.razor ファイルの追加

_Imports.razorを追加します。ソリューションエクスプローラーのプロジェクトノードをクリックして選択します。右クリックしてポップアップメニューを表示します。ポップアップメニューの[追加]の[新しい項目]をクリックします。


[新しい項目の追加]ダイアログボックスが表示されます。中央のファイル一覧のリストから[Razor コンポーネント]をクリックして選択します。


ダイアログ下部の[名前]テキストボックスに "_Imports.razor" と入力します。入力後ダイアログボックス右下の[追加]ボタンをクリックします。


_Imports.razor ファイルがソリューションに追加されます。

_Imports.razor の記述

_Imports.razorファイルを記述します。下記のコードを記述します。
_Imports.razor
@using System.Net.Http
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.Authorization
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.JSInterop

_Imports.razorの@usingディレクティブを記述しましたので、ほかのrazorファイルの@usingディレクティブは不要になります。
_Imports.razor
<Router AppAssembly="@typeof(Program).Assembly">
<Found Context="routeData">
    <RouteView RouteData="@routeData" />
</Found>
<NotFound>
    <LayoutView>
        <p>Sorry, there's nothing at this address.</p>
    </LayoutView>
</NotFound>
</Router>
Index.razor
@page
@namespace SimpleButton.Pages
<!DOCTYPE html>
<html lang="ja">
<head>
    <base href="~/" />
</head>
<body>
    <app>
        @(await Html.RenderComponentAsync<App>(RenderMode.ServerPrerendered))
    </app>
    <script src="_framework/blazor.server.js"></script>
</body>
</html>

プロジェクトがビルドでき実行できることを確認します。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2022-01-08
作成日: 2019-10-06
iPentec all rights reserverd.