如何获取MainLayout中的输入参数?

001*_*001 5 c# asp.net-core blazor asp.net-core-3.0

  1. Blazor 应用程序:我有自定义页眉徽标和自定义页脚链接,这些链接将根据输入参数 {id} 进行更改。

  2. 输入参数 ID 在查询中用于从数据库检索公司徽标和页脚链接信息。

动态页眉和页脚是mainlayout的一部分,如何通过mainlayout获取输入参数?

Isa*_*aac 11

假设您创建了一个 Company 父组件,它可以获取一个表示公司 ID 的路由参数,该值用于检索可能在子组件中显示的公司详细信息。您可以这样定义父组件:

Company.razor

@page "/company"
@page "/company/{ID}"

@code {
    [Parameter]
    public string ID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

注意:上面的两个路由模板是必需的...

回答你的问题...将此代码添加到 MainLayout 组件中

@code{

    public string ID { get; set; }

    protected override void OnParametersSet()
    {
        // pull out the "ID" parameter from the route data
        object id = null;
        if ((this.Body.Target as RouteView)?.RouteData.RouteValues?.TryGetValue("ID", out id) == true)
        {
            ID = id?.ToString();
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

注意:上面的代码从 RouteData 中提取 ID 参数的值,并将其存储在 ID 属性中。现在您可以用它做任何您想做的事情...包括将其传递给 NavMenu 组件(如果需要的话)。您可以这样做:

将 Component Parameter 属性添加到 NavMenu 组件,如下所示:

[Parameter]
public string ID { get; set; }
Run Code Online (Sandbox Code Playgroud)

并在NavMenu组件实例中添加一个ID组件参数属性(位于MainLayout组件的顶部。现在应该是 <NavMenu ID="@ID"/>

你现在高兴了 ?