Index
最小限の使用方法
最小限必要なものは以下の内容です。
[BlazorPath]
属性を付与したクラスを用意します。この際、クラス定義にはpartial
属性が必要です。
- そのクラス内のメンバーとして
const string
型の定数を定義します。
- メンバーの属性として、
[Page<PageComponent>]
を付与します。
BlazorPathHelperは上記の内容を満たすクラス定義を自動で走査して、URLビルダー関数を生成します。
WebPaths.cs |
---|
1
2
3
4
5
6
7
8
9
10
11
12 | using BlazorPathHelper;
using Microsoft.AspNetCore.Components;
[BlazorPath]
public partial class WebPaths
{
[Page<Home>]
public const string Index = "/";
}
// 各コンポーネントの定義(実際には各コンポーネントに記述されます)
public partial class Home : ComponentBase;
|
生成されたコード
Auto Generated Code |
---|
| // <auto-generated />
[Route("/")]
public partial class Home;
|
結果として、Home
コンポーネントには@page
属性が自動で付与されるのと同じ効果が得られます。
注意!
最後に元々定義されていた@page
属性を削除する必要があります。
パラメーター・クエリサポート
URLにパラメーター定義が含まれている場合、自動で[Parameter]
属性が付与されます。
WebPaths.cs |
---|
| using BlazorPathHelper;
[BlazorPath]
public partial class WebPaths
{
[Page<Counter>]
public const string CounterWithState = "/counter/{count:int}";
}
|
生成されたコード
Auto Generated Code |
---|
| // <auto-generated />
[Route("/counter/{count:int}")]
public partial class Counter
{
[Parameter]
public int Count { get; set; }
}
|
同様に、Query<QueryRecord>
属性を付与することで、自動で[SupplyParameterFromQuery]
属性が付与されます。
WebPaths.cs |
---|
| using BlazorPathHelper;
[BlazorPath]
public partial class WebPaths
{
[Query<QueryRecord>, Page<Counter2>]
public const string CounterWithQuery = "/counter/query";
}
public record QueryRecord(string query = "hello", int page = 0, bool? opt = null);
|
生成されたコード
Auto Generated Code |
---|
1
2
3
4
5
6
7
8
9
10
11
12
13 | // <auto-generated />
[Route("/counter/query")]
public partial class Counter2
{
[SupplyParameterFromQuery]
public string Query { get; set; }
[SupplyParameterFromQuery]
public int Page { get; set; }
[SupplyParameterFromQuery]
public bool? Opt { get; set; }
}
|
クエリ名の短縮にも対応しています。
WebPaths.cs |
---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | using BlazorPathHelper;
[BlazorPath]
public partial class WebPaths
{
[Query<QueryRecord>, Page<Counter3>]
public const string CounterWithQuery = "/counter/query";
}
public record QueryRecord
{
[SupplyParameterFromQuery(Name = "q")]
public string Query { get; init; } = "hello";
[SupplyParameterFromQuery(Name = "p")]
public int Page { get; init; } = 0;
[SupplyParameterFromQuery(Name = "o")]
public bool? Opt { get; init; }
}
|
生成されたコード
Auto Generated Code |
---|
1
2
3
4
5
6
7
8
9
10
11
12
13 | // <auto-generated />
[Route("/counter/query")]
public partial class Counter3
{
[SupplyParameterFromQuery(Name = "q")]
public string Query { get; set; }
[SupplyParameterFromQuery(Name = "p")]
public int Page { get; set; }
[SupplyParameterFromQuery(Name = "o")]
public bool? Opt { get; set; }
}
|
仕組み
TODO