【问题标题】:Cannot route to page using blazor route with parameter无法使用带参数的 blazor 路由路由到页面
【发布时间】: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


【解决方案1】:

您需要重写 OnParametersSetAsync,它会在参数更改时调用。

【讨论】:

    猜你喜欢
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 2020-10-27
    相关资源
    最近更新 更多