【Blazor】 クエリ文字列を操作する方法
- WebUtilitiesを使うと便利
- ParseQueryメソッドの紹介
- AddQueryStringメソッドの紹介
- まとめ
目次
WebUtilitiesを使うと便利

BlazorでURIを処理する上で便利なMicrosoft.AspNetCore.WebUtilitiesというライブラリを使用します。 これを使うと、HTTPリクエストやレスポンスに関連する操作を容易に行うためのユーティリティクラスやメソッドが利用できます。
今回はMicrosoft.AspNetCore.WebUtilitiesのQueryHelpersクラスのURIを操作するメソッドを利用していきます。
ParseQueryメソッドの紹介

QueryHelpersクラスのParseQueryメソッドは、URIのクエリパラメータから値を取得する際に使用します。 以下はクエリ文字列から値を取得するコード例です。
@page "/counter"
@using Microsoft.AspNetCore.WebUtilities;
@inject NavigationManager NavigationManager
@* ページタイトル *@
<h1>Counter</h1>
@* カウント表示 *@
<p>Current count: @countValue</p>
@* カウントを増やすボタン *@
<button class="btn btn-primary" @onclick="IncrementCount">Increase Count</button>
@code {
int countValue = 0;
// ページ初期化時の処理
protected override void OnInitialized()
{
var currentUri = NavigationManager.ToAbsoluteUri(NavigationManager.Uri);
// クエリパラメータ "startCount" をチェックしてカウントを設定
if (QueryHelpers.ParseQuery(currentUri.Query).TryGetValue("startCount", out var startCount))
{
countValue = Convert.ToInt32(startCount);
}
}
// カウントを増やす処理
void IncrementCount()
{
countValue++;
}
}
OnInitializedメソッドはページの初期化時に呼び出されるメソッドで、 このメソッド内にクエリ文字列を処理するコードを書いています。 BlazorのサービスであるNavigationManagerのToAbsoluteUriメソッドで現在のURIを取得できます。 そのURIをQueryHelpers.ParseQueryの引数として実行することで、countValueの値を求めることができます。
AddQueryStringメソッドの紹介

QueryHelpersクラスのAddQueryStringメソッドは、 ベースとなるのURIにクエリパラメータを追加するために使用します。以下コード例になります。
@page "/add-query"
@using Microsoft.AspNetCore.WebUtilities;
@inject NavigationManager NavigationManager
@* ページタイトル *@
<h1>Add Query String Example</h1>
@* 新しいURIを表示 *@
<p>Original URI: @originalUri</p>
<p>Modified URI: @uriWithQuery </p>
@code {
string originalUri = "https://example.com";
string? uriWithQuery;
/// <summary>
/// ページ初期化時の処理
/// </summary>
protected override void OnInitialized()
{
// クエリパラメータを追加
var parameters = new Dictionary<string, string?>
{
{ "name", "John Doe" },
{ "age", "30" },
{ "city", "Tokyo" }
};
uriWithQuery = QueryHelpers.AddQueryString(originalUri, parameters);
}
}
originalUriは、クエリパラメータ追加前のURI、uriWithQueryは、クエリパラメータ追加後のURIです。 QueryHelpers.AddQueryStringメソッドの第一引数にはoriginalUri、第二引数にはパラメータ名とその値をペアにした辞書型を指定します。 辞書型で指定することで複数のクエリパラメータを指定することができます。 実行することで、元のURIを保持したまま、新しいパラメータを追加することができます。
実行すると、https://example.com?name=John%20Doe&age=30&city=Tokyoが出力されます。
まとめ

Microsoft.AspNetCore.WebUtilitiesのQueryHelpersクラスを使用すると、URIのクエリパラメータを簡単に追加および取得できます。 この記事で紹介したメソッドを活用して、URIのクエリパラメータを操作してみてください。 これにより、Blazorアプリケーションでのデータの受け渡しがさらに便利になります。 クエリパラメータを適切に処理することで、ユーザーの操作に応じた動的なコンテンツを提供できるようになります。
この本では、Blazorの基本から高度なテクニックまで、実際のプロジェクトに役立つ知識を網羅しています。 初心者から経験者まで、Blazorを扱うすべての開発者にとっての必読書です。 この記事の執筆者も参考にした「Blazor入門」で、あなたのBlazorスキルを飛躍的に向上させませんか?
合わせて読みたい

gzip形式でデータを圧縮する方法
Blazorでのgzip形式によるデータ圧縮方法を解説。データの圧縮により通信速度の向上や読み込み時間の短縮が期待でき、SEOやUX向上にも寄与。Blazorアプリ側とサーバー側の設定が必要で、特に通信速度や圧縮サイズを優先するか選択可能。Webサーバー設定も取り上げ、Nginxの例を示す。
更新日:2023/09/03

コンポーネントについて
Blazorは.NET CoreベースのSPA作成フレームワークで、C#とHTMLを使用。この記事はBlazorとRazorコンポーネントの基本を紹介。Blazorアプリは[コンポーネント駆動]で、再利用可能な部品(.razor拡張子)から構成。コンポーネント名は大文字始まりが必要。また、HTMLとC#を組み合わせて、イベントハンドリングやデータバインディングが行える。
更新日:2023/09/06