同一页面中的Blazor路由更改

时间:2019-07-03 11:51:44

标签: .net-core blazor

我当前的设置是

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

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

@page "/page"
@page "/page/{Id}"

使用:

[Parameter]
public string Id { get; set; }

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

我想知道在这种情况下我该怎么办。

1 个答案:

答案 0 :(得分:4)

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;  
    }
}

enter image description here