如何从布局访问页面的路由参数?
我有一个接受路由参数的页面,如下所示:
@page /my-page/{Slug}
Run Code Online (Sandbox Code Playgroud)
我需要访问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 :-/
}
}
Run Code Online (Sandbox Code Playgroud) 我想在 blazor 的布局页面中包含可自定义的内容。我尝试向布局添加一个RenderFragment
参数,并在组件中添加同名的化妆品,但它没有在我的布局中呈现。
layout.razor
<header>
@HeaderContent
</header>
@body
@code
{
[Parameter]
public RenderFragment HeaderContent { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
component.razor
<HeaderContent>
<p>my page specific content</p>
</HeaderContnt>
Run Code Online (Sandbox Code Playgroud)
但它HeaderContent
是在体内呈现的。有人能解释一下如何做到这一点吗?或者为什么它在布局中不可能?我发现有效的唯一方法是这样,但如果我更改 RenderFragment 中的绑定参数,它不会刷新内容。
我有一个 Blazor 服务器端应用程序,试图了解其结构。在 MainLayout.razor 页面中,我看到了标签 @Body,这是每个页面内容的呈现位置。
我想知道,是否可以向 mainLayout 页面添加额外的渲染元素?例如,@Header 部分。而且我更愿意在每个单独的页面中定义这个部分。
换句话说,对于每个页面,除了主要内容之外,还需要定义Header、Footer,或者我在MainLayout中定义的任何渲染元素。这样,我可以自定义每个页面唯一的页眉/页脚元素。
谢谢你的帮助。