Reputation: 603
I need to retrieve current value from MainLayout. But I don't know how to refer (or access) to it.
MainLayout.razor
@inject SomeService SomeService
<-- layout -->
@code
{
[Parameter] public string SomeParameter { get; set; };
protected override async Task OnInitializedAsync()
{
SomeParameter = SomeService.GetData();
}
}
ChildPage.razor
@page "/childpage"
<-- layout -->
@code
{
private string someParameter;
protected override async Task OnInitializedAsync()
{
someParameter = ??? (how to get MainLayout.SomeParameter);
}
}
P.S. I don't want to get data from SomeService directly in ChildPage.razor, I need a value which is on MainLayout.
Upvotes: 0
Views: 291
Reputation: 9162
Use cascading values.
MainLayout.razor
@inject SomeService SomeService
<div>
<CascadingValue Value=@SomeValue>
@Body
</CascadingValue>
</div>
@code {
string SomeValue;
protected override async Task OnInitializedAsync()
{
SomeValue = SomeService.GetData();
}
}
ChildPage.Razor
@page "/childpage"
<div>@SomeParameter</div>
@Code {
[CascadingParameter] public string SomeParameter { get; set; }
}
Upvotes: 1