blazor - Blazor:从布局访问参数
问题描述
如何从布局中访问页面的路由参数?
我有一个接受如下路由参数的页面:
@page /my-page/{Slug}
我需要访问Slug
在共享布局中呈现标记时的值。
我尝试OnParametersSet
在布局文件中实现如下所示,但未设置该值。它仅在页面级别分配。
@inherits LayoutComponentBase
<div class="sidebar">
<NavMenu />
</div>
<div class="main">
<div class="top-row px-4">
@this.Slug <<<<------ display the parameter
</div>
<div class="content px-4">
@Body
</div>
</div>
@code
{
[Parameter]
public string Slug { get; set; }
protected override void OnParametersSet()
{
// Slug is always null :-/
}
}
解决方案
您可以通过 CascadingParameters 使 RouteData 可用于所有组件。在您的 App.razor 中,执行以下操作:
<Router AppAssembly="@typeof(Program).Assembly">
<Found Context="routeData">
<CascadingValue Value="@routeData">
<RouteView RouteData="@routeData" DefaultLayout="@typeof(MyLayout)" />
</CascadingValue>
</Found>
</Router>
然后,在需要 RouteData 的所有组件中,只需添加:
@code
{
[CascadingParameter]
RouteData RouteData { get; set; }
}
该值将自动填充。
推荐阅读
- c++ - Edmonds 在 Boost Graph Library 中的最大基数匹配永远运行?
- python - 使用 nltk 在 python 中计算 idf
- javascript - CSS @keyframe 动画删除整个按钮,而不仅仅是边框
- jenkins - 如何从我的 GitHub 拉取请求中删除“持续集成/jenkins/pr-merge”和“持续集成/jenkins/branch”检查?
- javascript - 如何创建没有任何循环的二维数组?
- javascript - 存储和检索用户访问信息的最佳和最安全的地方
- java - MySQL 表错误中的自动增量键
- java - 无法在 Netbeans 8.2 中创建 Maven Web 项目
- tensorflow - 如何使用 tensorflow 2 从 keras 模型中获取评估梯度?
- vim - How to map ":f" to "1
"?