跳转至

简单用法

安装

在你的 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 后,将会自动生成如下代码:

自动生成的代码
 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)]