将导航参数传递给 blazor 中的 Nav 或 Layout 组件

Pass Navigation Parameter to Nav or Layout component in blazor

在 Blazor(服务器端)应用程序上,我有一个嵌套布局。当我们转到嵌套布局中的页面时,我有导航到其他页面的导航。着陆页的 url 是 /items/3,其中 3 是 {id:int}。现在要导航到其他页面,我需要将此 id 传递给 Nav/Layout 组件 - 这样我就可以在其他页面上使用该 id。如何将此 id 传递给 Nav 或 Layout 组件?

尝试将 [Parameter] 标记放在 Nav 或 Layout 组件上,但未填充参数。

我认为您不能将值从组件传递到布局组件。不存在这样的功能......但是,我想你可以使用一些黑客技术。但是,您应该使用 IUriHelper 导航到另一个页面,如下所示:

@inject Microsoft.AspNetCore.Blazor.Services.IUriHelper UriHelper

<button onclick=@Navigate>Click me to navigate to another page</button>


@functions {
    private void Navigate()
    {
        UriHelper.NavigateTo("/hello-world");
    }
}

编辑: 正如我在上面所写的,无法将参数从子组件传递到父组件。您应该根据 Blazor 提供的功能、行为和限制调整您的应用。下面是link对Github中的一个issue,大家可以阅读了解传递参数的机制。史蒂夫·安德森 (Steve Anderson) 也发表了评论,他建议您如何破解此问题:https://github.com/aspnet/Blazor/issues/857

希望这对您有所帮助...