Lightning Blog
Blazor記事イメージ画像

【Blazor】 クエリ文字列を操作する方法

更新日:2023/07/19
BlazorでURIのクエリ文字列の追加や取得を行う方法について、解説します。

    目次

  • WebUtilitiesを使うと便利
  • ParseQueryメソッドの紹介
  • AddQueryStringメソッドの紹介
  • まとめ

WebUtilitiesを使うと便利

セクション画像

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

今回はMicrosoft.AspNetCore.WebUtilitiesQueryHelpersクラスの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のサービスであるNavigationManagerToAbsoluteUriメソッドで現在の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.WebUtilitiesQueryHelpersクラスを使用すると、URIのクエリパラメータを簡単に追加および取得できます。 この記事で紹介したメソッドを活用して、URIのクエリパラメータを操作してみてください。 これにより、Blazorアプリケーションでのデータの受け渡しがさらに便利になります。 クエリパラメータを適切に処理することで、ユーザーの操作に応じた動的なコンテンツを提供できるようになります。


ブログ内の記事で書かれているサンプルコードは、GitHubから確認する事ができます。 是非参考にしてみてください。

この本では、Blazorの基本から高度なテクニックまで、実際のプロジェクトに役立つ知識を網羅しています。 初心者から経験者まで、Blazorを扱うすべての開発者にとっての必読書です。 この記事の執筆者も参考にした「Blazor入門」で、あなたのBlazorスキルを飛躍的に向上させませんか?

合わせて読みたい

カード画像
入力インターフェースのバインド方法

この記事では、Blazorを使用したドロップダウン、テキストボックス、チェックボックス、ラジオボタン、スライダーのバインド方法を解説します。ユーザー入力をリアルタイムに反映し、データを動的に更新する方法を詳しく紹介しています。これにより、効率的にインタラクティブなWebアプリケーションを構築できます。

更新日:2023/07/20

カード画像
コンポーネント間のイベント受け渡し方

Blazorでの部品コンポーネントからのイベント取得方法を解説。イベントの返却にはEventCallbackを使用し、<>内に変数を指定。多変数の場合はクラスを作成。今回はMouseEventArgsを返却。作成した部品コンポーネントはページ内で利用し、イベント発生時にShowMessageが呼ばれ、メッセージが表示されることを確認。

更新日:2023/07/19

An error has occurred. This application may no longer respond until reloaded. Reload 🗙