4
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 3 years have passed since last update.

ASP.NET Core Blazor WebAssembly - レイアウトの構築【フロントエンド開発入門者向け】

Posted at

こんにちは!

本記事では、ASP.NET Core Blazor (以下 Blazor) のレイアウト機能について解説します!

レイアウトについて

Blazor のレイアウト機能により、画面を構成する領域を自由に定義することが出来ます。

また、ページ全体を再読み込みするのではなく、一部分だけを読み込み・更新する領域についても、レイアウト機能で定義します。

SPA (Single Page Application) を構築する上で、欠かせない機能なのでしっかりと理解しましょう。

公式ドキュメント : ASP.NET Core Blazor レイアウト

レイアウト例 : ヘッダー、ボディ、フッター

例えば、上から、ヘッダー、ボディ、フッターと並べられるレイアウト。

トップページ、ライティングページでよく採用されるレイアウトです。

image.png

レイアウト例 : 左にサイドメニュー

例えば、左側にメニューが設けられるレイアウト。

メニュー内で選択された項目に応じて、コンテンツを表示するレイアウトです。

最近のアプリケーションで、よく採用されるレイアウトかと思います。

例えば、Microsoft Teams などは、このレイアウトを採用していますね。

image.png

レイアウトのサンプルコード

本記事では、ヘッダー、ボディ、フッター、そして左にサイドメニューがあるレイアウトを Blazor で実現してみました。

サンプルコードを元に解説します。

image.png

SampleLayout.blazor

@inherits LayoutComponentBase

<div class="page">
    <!-- ヘッダー -->
    <header class="header">
        <h3>ヘッダー - Blazorレイアウトサンプル</h3>
    </header>


    <!-- サイドメニュー(左) -->
    <div class="menu">
        <ul>
            <li>Menu 1</li>
            <li>Menu 2</li>
            <li>Menu 3</li>
        </ul>
    </div>

    <!-- コンテンツ -->
    <div class="content">
        @Body
    </div>

    <!-- フッター -->
    <footer class="footer">
       フッター
    </footer>

</div>


@code {

}


SampleLayout.blazor.css

.page {
    display: grid;
    grid-template-columns: 200px 1fr;
    grid-template-rows: 60px 1fr 26px;
    grid-template-areas : 
        "header header"
        "menu   content"
        "footer footer"
    ;
}

.header {
    grid-area: header;
    background-color: orange;
}

.menu {
    grid-area: menu;
    background-color: lightgreen;
}

.content {
    grid-area: content;
    background-color: whitesmoke;
}

.footer {
    grid-area: footer;
    background-color: skyblue;
}

HTML + CSS の基礎知識が必要

上記サンプルコードから分かるように、レイアウトの構築には、HTML + CSS の知識が必要となります。

本記事ではBlazor 固有の機能について解説していきます。

Blazor のレイアウト固有機能

@inherits LayoutComponentBase

Blazor のレイアウト機能を利用するためには、LayoutComponentBase を継承する必要があります。

レイアウト機能を実装する場合は、忘れずに定義しましょう。

@inherits LayoutComponentBase

@Body

メインコンテンツを表示する領域には、@Body を配置します。

@Body には、例えば、メニューから "画面1" や "画面2" をクリックした際に、それぞれの画面コンテンツが表示されます。

この動きは、ルーティング機能により実装します。

Blazor はルーティング機能により、画面の一部領域のみ描画を更新することが出来ます。

公式ドキュメント : ASP.NET Core Blazor のルーティング

作成したレイアウトを App.razor で定義

作成したレイアウトは、App.razor にて定義しましょう。

アプリケーションの起動時に、App.razor に定義したレイアウトが表示されるようになります。


<Router AppAssembly="@typeof(Program).Assembly" PreferExactMatches="@true">
    <Found Context="routeData">
        <RouteView RouteData="@routeData" DefaultLayout="@typeof(SampleLayout)" />
    </Found>
    <NotFound>
        <LayoutView Layout="@typeof(SampleLayout)">
            <p>Sorry, there's nothing at this address.</p>
        </LayoutView>
    </NotFound>
</Router>

まとめ

本記事では、Blazor アプリケーションのレイアウトについて解説しました。

次回の記事では、画面遷移 (ルーティング) 、コンポーネントについての解説記事の執筆を予定しています。

開発全般に関するご相談はお任せください!

インフラジスティックス・ジャパンでは、各プラットフォームの特別技術トレーニングの提供や、開発全般のご支援を行っています。

「古い技術やサポート終了のプラットフォームから脱却する必要があるが、その移行先のプラットフォームやフレームワークの検討が進まない、知見がない。」

「新しい開発テクノロジーを採用したいが、自社内にエキスパートがいない。日本語リソースも少ないし、開発を進められるか不安。」

「自社のメンバーで開発を進めたいが、これまで開発フェーズを外部ベンダーに頼ってきたため、ツールや技術に対する理解が乏しい。」

「UIを刷新したい。UIデザインやUI/UXに関する検討の進め方が分からない。外部のデザイン会社に頼むと、開発が難しくなるのではないか、危惧している。」

といったご相談を承っています。

お問い合せはこちらからお気軽にご相談ください。

4
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
4
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?