URL Builder
Basic Usage
The minimum requirements are as follows:
- Prepare a class with the
[BlazorPath]
attribute. This class definition must also include the partial
attribute.
- Define constants of type
const string
as members within that class.
BlazorPathHelper will automatically search for class definitions that meet the above criteria and generate URL builder functions.
WebPaths.cs |
---|
| [BlazorPath]
public partial class WebPaths
{
public const string CounterWithState = "/counter/{count:int}";
}
|
Generated Code
Auto Generated Code |
---|
| // <auto-generated />
public partial class WebPaths
{
public partial class Helper
{
public static string CounterWithState(int Count)
=> string.Format("/counter/{0}", ToStringForUrl(Count));
}
}
|
Supporting PathBase
Specification
When deploying under a subdirectory, you can configure the generated URLs to consider the PathBase
by setting it as follows:
WebPaths.cs |
---|
| [BlazorPath(PathBaseValue = PathBase)]
public partial class WebPaths
{
[Item(Ignore = true)]
private const string PathBase = "/subdir";
// ...
}
|
The value specified here is directly passed to both <base href>
and app.UsePathBase()
.
App.razor |
---|
| <base href="@WebPaths.PathBase" />
|
Program.cs |
---|
| app.UsePathBase(WebPaths.PathBase);
|
For more details, refer to Example.ServerPathBase.
URL Definition Examples
All URL definitions listed in the official documentation are supported. You can also refer to the test cases for this program.
Standard Examples
Definition Example |
Generated Function |
Example Output URL |
"/{text}" |
string Text(string text) |
"/sample-text" |
"/{active:bool}" |
string Active(bool active) |
"/true" |
"/{dob:datetime}" |
string Dob(DateTime dob) |
"/2025-01-01T00:00:00Z" ※1 |
"/{price:decimal}" |
string Price(decimal price) |
"/123.45" |
"/{weight:double}" |
string Weight(double weight) |
"/123.45" |
"/{weight:float}" |
string Weight(float weight) |
"/123.45" |
"/{id:guid}" |
string Id(Guid id) |
"/00001111-aaaa-2222-bbbb-3333cccc4444" |
"/{id:int}" |
string Id(int id) |
"/123456789" |
"/{ticks:long}" |
string Ticks(long ticks) |
"/123456789" |
"/{parameter:nonfile}" |
string Parameter(string parameter) |
"/foo" |
"/{*pageRoute}" |
string PageRoute(string pageRoute) |
"/foo/bar/buz" |
※1: The output is converted to ISO 8601 format and UTC format.
Optional Parameter Examples
Definition Example |
Generated Function |
Example Output URL |
"/{text?}" |
string Text(string? text = null) |
"/sample-text-2", "/" |
"/{active:bool?}" |
string Active(bool? active = null) |
"/true", "/" |
Combined Examples
Definition Example |
Generated Function |
Example Output URL |
"/{text}/{val:int}" |
string TextValue(string text, int val) |
"/sample/123" |
"/{id:int}/{flag:bool?}" |
string IdFlag(int id, bool? flag = null) |
"/123/true", "/456/" |
Various Definition Methods
WebPaths.cs |
---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 | using BlazorPathHelper;
[BlazorPath]
public partial class WebPaths
{
// string
public const string WithString = "/string/{val}";
// nullable string
public const string WithStringNullable = "/string-null/{val?}";
// bool
public const string WithBool = "/bool/{val:bool}";
// datetime
public const string WithDate = "/datetime/{val:datetime}";
// decimal
public const string WithDecimal = "/decimal/{val:decimal}";
// double
public const string WithDouble = "/double/{val:double}";
// float
public const string WithFloat = "/float/{val:float}";
// guid
public const string WithGuid = "/guid/{val:guid}";
// int
public const string WithInt = "/int/{val:int}";
// long
public const string WithLong = "/long/{val:long}";
// multiple pattern
public const string WithMultiple = "/multi/{val1:int}/{val2:int}";
// super multiple pattern
public const string WithSuperMultiple = "/something/{val1:string}/{val2:int}/{val3:double?}";
// catch all pattern
public const string WithCatchAll = "/catch-all/{*rest}";
}
|