Предположим, вы создали родительский компонент Company, который может получить параметр маршрута для представления идентификатора компании, значение которого используется для получения сведений о компании, которые могут отображаться в дочернем компоненте. Вы можете определить родительский компонент следующим образом:
Company.razor
@page "/company"
@page "/company/{ID}"
@code {
[Parameter]
public string ID { get; set; }
}
Примечание: два вышеуказанных шаблона маршрута необходимы ...
Ответ на ваш вопрос .. Добавьте этот код в компонент 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();
}
}
}
Примечание. Приведенный выше код извлекает значение параметра ID из RouteData и сохраняет его в свойстве ID. Теперь вы можете делать с ним все, что захотите ... включая передачу его компоненту NavMenu, если это необходимо. Вот как это можно сделать:
Добавьте свойство параметра компонента в компонент NavMenu, например:
[Parameter]
public string ID { get; set; }
И добавьте атрибут параметра компонента ID в экземпляр компонента NavMenu (расположен в верхней части компонента MainLayout. Теперь он должен быть <NavMenu ID="@ID"/>
Примечание. В этом примере кода описывается, как можно вывести идентификатор параметра (AccountID и т. д. c.) из MainLayout и как его передать. к его дочернему компоненту, NavMenu (TopNav, LeftNav). Теперь, когда у вас есть идентификатор, вы можете передать его в любое хранилище данных, которое вы определили, и получить некоторые данные ...
Надеюсь, что это помогает ...