【发布时间】:2019-05-24 01:11:57
【问题描述】:
我的 blazor 服务器端应用程序中的路由存在问题。我在剃刀视图中指定了@page "/intent/{intentid:int}",我正在使用链接标签在侧栏上导航到它,例如:测试。地址栏 url 在链接点击时发生变化,但我在 OnInit 后面的意图 c# 代码没有被触发???有什么建议吗?
我尝试使用 UriHelper 导航到页面,但页面 OnInit 再次没有被触发。
意图视图:
@page "/"
@page "/intent/{intentid:int}"
意图代码:
[Parameter]
private int IntentId { get; set; }
NavMenu 页面:
<a class="btn btn-primary" href="Intent/@(item.Key)">@intentClassifier.Text</a>
一旦点击链接并接收到 intentid 的参数值,我希望在我的意图页面上点击 OnInit。 但只有地址栏中的 url 发生变化,仅此而已
【问题讨论】:
-
所以我得到了 Kirk Woll 在link 上的问题的答案。因此 Blazor 看到负责此路由的页面没有更改,因此 OnInit 不会触发(因为同一页面正在处理同一路由)。我在我的选项卡集组件中遇到了这种情况,我解决它的方法是在 IUriHelper 上注册一个监听器:
-
受保护的覆盖 void OnInit() { base.OnInit(); UriHelper.OnLocationChanged += UriHelperOnOnLocationChanged; } public void Dispose() { UriHelper.OnLocationChanged -= UriHelperOnOnLocationChanged; }
-
private void UriHelperOnOnLocationChanged(object sender, string e) { //这里处理休息 }
标签: parameters routes blazor