コンテンツにスキップ

簡単な使い方

導入

BlazorプロジェクトにBlazorPathHelperをインストールします。

BlazorPathHelperをインストールする
1
dotnet add package BlazorPathHelper

URLビルダー

以下のような razor ファイルが存在していたとします。

Sample.razor
1
2
3
@page "/sample"
@page "/sample/{id:int}"
@page "/sample/{value}"

BlazorPathHelper を導入すると、以下のようなコードが 自動的に 生成されます。

Auto Generated Code
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// <auto-generated />
public partial class Sample 
{
  public static string UrlBuild()
    => "/sample";
  public static string UrlBuild(int id)
    => string.Format("/sample/{0}", ToStringForUrl(id));
  public static string UrlBuild(string value)
    => string.Format("/sample/{0}", ToStringForUrl(value));
}

以下のように使用することができます。

Usage.cs
1
2
3
var url1 = Sample.UrlBuild();       // -> "/sample"
var url2 = Sample.UrlBuild(1);      // -> "/sample/1"
var url3 = Sample.UrlBuild("test"); // -> "/sample/test"
Navigation.razor
1
2
3
4
5
6
7
8
@inject NavigationManager NavigationManager
@code {
    void OnClick()
    {
        var navigationUrl = Sample.UrlBuild(1);
        NavigationManager.NavigateTo(navigationUrl);
    }
}

制約

この簡易生成は以下のようなケースでは正常に動作しません。
これらに該当する場合は 高度な使い方 を参照してください。

クエリパラメータを使用する場合

SampleWithQuery.razor
1
2
3
4
5
6
@page "/query"

@code {
    [SupplyParameterFromQuery]
    public int Value { get; set; }
}

複数のURL定義が存在し、引数の型が一致する場合

Conflict1.razor
1
2
@page "/a"
@page "/b"
Conflict2.razor
1
2
@page "/c/{foo:int}"
@page "/d/{bar:int}"

URL定義が定数で行われている場合

ConstantUrl.cs
1
2
@* public const string ConstUrl = "/constant"; *@
@attribute [Route(ConstUrl)]