Blazor - передача параметров в пользовательский макет - PullRequest
0 голосов
/ 14 февраля 2020

Как передать параметр в пользовательский макет?

При нажатии NavLink пользовательский макет будет отображен внутри 'MainLayout'.

В «MainLayout» мы добавили «пользовательский макет» как вложенный, и мы хотим передать параметр в пользовательский макет из MainLayout.

Обновлено:

CustomLayout Page:

@layout MSLayout
@inherits LayoutComponentBase

<section id="Content-nested">
    <div>
        @Body
    </div>
</section>

Здесь мы хотим передать некоторое значение от MSLayout до CustomLayout.

CustomLayout будет использовано в другом компонент:

@layout CustomLayout
@page "/NestedComponent"

<h1>This component is in 'Nested layout!!!'</h1>

1 Ответ

0 голосов
/ 14 февраля 2020

Поскольку MainLayout является компонентом, а пользовательский макет также является компонентом, вы можете определить свойство параметра в своем пользовательском компоненте следующим образом:

CustomLayout.razor

<p>@Title</p>

@code
{
   [Parameter]
   public string Title {get; set;} 
}

А в MainLayout вы можете сделать что-то вроде этого:

MainLayout.razor

@inherits LayoutComponentBase

<div class="sidebar">
   <NavMenu />
</div>
<div>
      @*Pass a component parameter to the CustomLayout component *@
     <CustomLayout Title="@Title" />
</div>
<div class="main">
   <div class="top-row px-4 auth">
        <a href="https://docs.microsoft.com/aspnet/" 
            target="_blank">About</a>
   </div>

   <div class="content px-4">
       @Body
   </div>
</div>

@code
{
   public string Title { get; set; } = "Default title";
}
...