C# Blazor导航到相同的URL但不同的id

C# Blazor导航到相同的URL但不同的id,c#,blazor,blazor-server-side,blazor-client-side,blazor-routing,C#,Blazor,Blazor Server Side,Blazor Client Side,Blazor Routing,我在从中导航时遇到问题 “/vehicle definitions/1/can网络/5” 到 “/vehicle definitions/1/can网络/6” 基本上,所发生的一切都是空穴来风。我希望和例外的行为是加载这个id为6的新页面,从数据库加载,并在页面上显示新项目。但看起来,Blazor认为这是同一页(基本上是这样的)。我尝试了您必须重写OnParametersSetAsync()方法并从数据库重新加载数据 首先改变你的路线如下 /vehicle definitions/1/can网络

我在从中导航时遇到问题

“/vehicle definitions/1/can网络/5”

“/vehicle definitions/1/can网络/6”


基本上,所发生的一切都是空穴来风。我希望和例外的行为是加载这个id为6的新页面,从数据库加载,并在页面上显示新项目。但看起来,Blazor认为这是同一页(基本上是这样的)。我尝试了
您必须重写OnParametersSetAsync()方法并从数据库重新加载数据

首先改变你的路线如下

/vehicle definitions/1/can网络/{id}

然后使用[ParameterAttribute]设置属性

[Parameter] 
public string Id{ get; set; }
现在,您可以重写OnParametersSetAsync方法,并使用更改的参数重新加载新数据

protected override async Task OnParametersSetAsync()
{
    LoadData(Id);
} 

它可能会在OnParametersSetAsync和onIntialiedAsync中从数据库加载两次。也许我只能将逻辑放在OnParametersSetAsync中,但我所做的是检查:if(CANNetwork.Id!=Id){CANNetwork=await CANNetworkService!.GetById(int.Parse(Id));}也许您可以使用其他方法在AfterRender(bool firstRender)中实现此受保护的覆盖void{base.OnAfterRender(firstRender);}