gpt4 book ai didi

路由参数更改时 Blazor 服务器页面不呈现

转载 作者:行者123 更新时间:2023-12-03 07:57:12 24 4
gpt4 key购买 nike

我有一个使用以下指令定义的 .razor 页面:

@page "/Search"
@page "/Search/{SearchTerm}"
@page "/Search/{SearchTerm}/{QueryId}"

我使用以下链接访问该页面:

<a href="/Search/Page1">Page1</a>
<a href="/Search/Page2">Page2</a>

当我第一次加载页面时,我选择Page1。页面渲染成功。服务器代码执行。

使用与原始页面相同的选项卡,我单击“Page2”,但没有任何反应。新页面不执行。 URL 确实更改为新地址。

关于为什么 Page2 页面无法正确呈现的想法?与 SignalR 和路由有关吗?

谢谢。

最佳答案

路由器只能看到一 strip 有 2 个参数 SearchTermQueryId 的路由 /Search,因此如果您希望在这些参数更改时运行逻辑在 /Search 路由中,您需要将其设置为 OnParametersSetOnParametersSetAsync

使用与上面示例相同的链接的示例:

@page "/Search"
@page "/Search/{SearchTerm}"
@page "/Search/{SearchTerm}/{QueryId}"

<h1>@SearchTerm</h1>
<h2>@_searchTermOnParamChanged</h2>
<h2>OnInitializedAsync @_searchTermOnInit</h2>

@code {
[Parameter]
public string? SearchTerm { get; set; }
[Parameter]
public string? QueryId { get; set; }
private string _searchTermOnParamChanged = "";
private string _searchTermOnInit = "";

protected override Task OnInitializedAsync()
{
_searchTermOnInit = $"SearchTerm just changed to {SearchTerm}";
return base.OnInitializedAsync();
}
protected override Task OnParametersSetAsync()
{
_searchTermOnParamChanged = $"SearchTerm just changed to {SearchTerm}";
return base.OnParametersSetAsync();
}

}

enter image description here

enter image description here

关于路由参数更改时 Blazor 服务器页面不呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75758219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com