
【Blazor】 NavigationManagerの使い方
- NavigationManagerとは?
- 基本的な使用方法
- NavigationManagerの主な機能
- NavigationManagerを使ってみよう
目次
NavigationManagerとは?

BlazorのNavigationManagerは、クライアントサイドのルーティングを管理するためのクラスです。 これを使用すると、ユーザーがアプリケーション内の異なるページ間を移動する際に、URLの変更やページの表示を制御することができます。
例えば、ユーザーがフォームを送信した後に別のページにリダイレクトする場合などに利用されます。
基本的な使用方法

まずNavigationManagerを使うためには、サービスを挿入する必要があります。 newしてインスタンスを作成するわけではないので、注意してください。 このサービスはデフォルトでBlazorにサービス登録されていますので、program.csでサービス登録する必要はありません。
具体的なコードは以下のようになります。 NavigationManagerを利用するには、以下のように@injectを使用して、 NavigationManagerをコンポーネントに注入します。
@* NavigationManagerサービスを挿入する *@ @inject NavigationManager NavigationManager
こうすることで、NavigationManagerの様々な機能を利用することができます。
NavigationManagerの主な機能

メソッドorプロパティ | 機能説明または取得する値 |
---|---|
NavigationManager.Uri | https://localhost:5001/counter/3?q=hiを取得する |
NavigationManager.BaseUri | https://localhost:5001/を取得する |
NavigationManager.NavigateTo("counter") | 新しい場所(カウンタページ)に移動します。 |
NavigationManager.LocationChanged | Blazorアプリケーション内でURLの変更が発生したときに通知を受けるためのイベント |
NavigationManager.ToAbsoluteUri("counter") | counterページまでのURIクラスを返す |
NavigationManager.ToBaseRelativePath(NavigationManager.Uri) | counter/3?q=hiを取得する |
これらのメソッドやプロパティを駆使すると、ナビゲーションを行う際にとても便利です。 次のセクションでは、具体的なコードを見ていきます。
NavigationManagerを使ってみよう

NavigationManagerを試しに使ってみます。
NavigationManagerには様々な機能がありますが、 今回はボタンを押すとデフォルトで存在するカウンターページへ遷移し、 その際にログも合わせて出力するプログラム例を見ていきます。 BlazorプロジェクトのIndex.razorを以下のように書き換えます。
@page "/" @using Microsoft.AspNetCore.Components @using System.Diagnostics @inject NavigationManager NavigationManager @implements IDisposable <button @onclick="NavigateToCounter">Counterへ移動</button> @code { protected override void OnInitialized() { // ページ遷移したときのイベントを登録 NavigationManager.LocationChanged += LocationChangedHandler; } /// <summary> /// ページ遷移したときの処理 /// </summary> private void LocationChangedHandler(object? sender, LocationChangedEventArgs e) { Debug.WriteLine($"遷移先URL: {e.Location}"); } /// <summary> /// counterページへ移動 /// </summary> private void NavigateToCounter() { NavigationManager.NavigateTo("/counter"); } /// <summary> /// ページ遷移後の破棄処理 /// </summary> public void Dispose() { NavigationManager.LocationChanged -= LocationChangedHandler; } }
初期化処理であるOnInitializedでは、 ページ遷移した際のイベントであるNavigationManager.LocationChangedにログ出力するメソッドを登録しています。
ボタンクリックの際に、NavigationManager.NavigateToメソッドを使って、画面遷移するようにしています。 NavigationManager.NavigateToメソッドには、遷移先のページのURLである/counterを指定しています。
Disposeメソッドでは、ページ遷移後はログ出力のメソッドを解除するために書いています。
それでは実行してみましょう。ボタンをクリックして画面が遷移するかを確かめます。


画面が遷移されることが確認できました。 この機に、NavigationManagerの機能を色々試してみてください。
この本では、Blazorの基本から高度なテクニックまで、実際のプロジェクトに役立つ知識を網羅しています。 初心者から経験者まで、Blazorを扱うすべての開発者にとっての必読書です。 この記事の執筆者も参考にした「Blazor入門」で、あなたのBlazorスキルを飛躍的に向上させませんか?
合わせて読みたい

検証付きフォームの作成方法
Blazorの組み込みのEditFormコンポーネントを用いてフォームを作成する方法を紹介。Model属性とOnSubmit属性を活用し、アノテーションによる検証機能を追加。FormDataクラスのプロパティに検証属性を付与して入力の正確性を確保。フォームの作成から検証機能追加までの手順を説明。
更新日:2023/07/19

appsettings.jsonの使い方
Blazor Serverでのappsettings.jsonの使い方を解説します。開発環境や運用環境に応じた設定の使い分け方法も紹介し、appsettings.jsonから設定値を読み込む手順を具体的に説明します。
更新日:2024/06/12