c# - 单击链接时,blazor 不会更改页面
问题描述
我正在将我的个人博客迁移到 Blazor,但我遇到了问题。我正在开发“下一篇文章”功能,当单击链接时,blazor(或浏览器)不会重定向用户。帖子是下一条路线下的“同一页”@page "/post/{Url}
例如,用户在该站点中,domain.com/post/foo
并且该站点中有一个指向domain.com/post/bar
. 这是一个简单的链接,如下所示:
<a href="post/bar" title="@Post.Title">
@Post.Title
</a>
当用户点击链接时,浏览器的 url 会发生变化,页面的位置会移动到顶部,但页面内容不会改变。
我注意到当我从一个post
页面点击到另一个页面时会发生这种行为,但不会发生在站点的“索引”(/
)或当我单击帖子上链接到domain.com/tags/{tag}
.
需要注意的一件事是,如果我在浏览器中选择 url 并单击 enter 或刷新页面,它实际上会转到我单击的页面,在这种情况下domain.com/post/bar
我的问题是,这实际上是预期的行为还是错误?如果这是预期的行为,是否有任何方法可以使 url 实际转到单击的 url 而不是留在同一页面中。
如果这很重要,我正在使用 net5.0。
谢谢。
解决方案
作为@enet 答案的补充,您可能正在获取/中的Url
属性引用的帖子。请参阅@enet 答案中的最后一段。OnInitialized
OnInitializedAsync
解决此问题的一种方法是:
- 将加载数据的代码放在单独的方法中说
LoadDataAsync
- in
SetParameters
/SetParametersAsync
检测数据引用(在您的情况下Url
)是否已更改,如果更改,请调用LoadDataAsync
。
这里的关键是了解组件生命周期并将代码放在正确的位置。
在加载和导航时设置断点OnInitialized
并SetParameters
观察它们何时被击中。
推荐阅读
- azure - Activitylog PS - 事件发起者
- sas - 如何在 SAS 中使用名称中带有句点/点停止的变量?
- c# - ASP.Net MVC5 中 DropDownlist 的难点
- r - R 管道工发布 PDF
- python - 使用 Python 管理 AWS
- python - 将生成的组合中的项目从一个列表重新定义为另一个列表的术语,其项目在位置上是链接的
- kendo-ui-angular2 - 在 Kendo Angular Grid 上设置滚动位置
- javascript - 使用 JavaScript 添加/删除表行
- html - 垂直线性渐变
- sql - oracle错误信息输入值不够长