同一页面中的 Blazor 路由更改

Gil*_*ian 8 .net-core blazor

我目前的设置:

  • .NET 核心 3(预览版 6)
  • Blazor 服务器端渲染

在 Blazor 页面中,我有如下内容:

@page "/page"
@page "/page/{Id}"
Run Code Online (Sandbox Code Playgroud)

和:

[Parameter]
public string Id { get; set; }
Run Code Online (Sandbox Code Playgroud)

现在,例如从导航/page/1到 时/page/2,我可以使用OnParametersSetAsync来检测这些更改。但是从 导航/page/1到时会出现问题/pageOnParametersSetAsync可以检测到这种变化,但是Id参数将保持1与之前的路线相同。

我想知道在这种情况下我能做什么。

dan*_*era 10

Blazor 不会用 null 覆盖空参数,请自行完成:

@page "/Counter"
@page "/Counter/{Id}"
<h1>Current Id: @IdString;</h1>
<a href="/Counter"> go home </a> |
<a href="/Counter/1"> go home 1 </a> |
<a href="/Counter/2"> go home 2 </a>

@code
{
    private string IdString;
    [Parameter] public string Id { get; set; }

    protected override async Task OnParametersSetAsync()
    {
        // copy par value somewhere
        IdString = Id?.ToString() ?? "";

        // rest parm (set to null) by yourself
        Id=null;  
    }
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明