Page 에서 버튼 클릭시 NavMenu 의 다른 Page 메뉴로 이동하게끔 처리하는 방법입니다.
PublicScopeService.cs
namespace Blazor.RadzenTest.Services
{
public class PublicScopeService : Dictionary<string, object>
{
}
}
Program.cs
builder.Services.AddScoped<PublicScopeService>();
PublicScopeService 는 dictionary 로 정의하여 키, 값의 형태로 데이터를 관리합니다.
Shared/NavMenu.razor 에 아래처럼 @inject PublicScopeService 하고 pss["NavMenu"] = this;
@using Blazor.RadzenTest.Services
@inject PublicScopeService pss
@inject NavigationManager Navigation
.....
@code {
private bool collapseNavMenu = true;
private string? NavMenuCssClass => collapseNavMenu ? "collapse" : null;
private void ToggleNavMenu()
{
collapseNavMenu = !collapseNavMenu;
}
public void NavigatePage(string href)
{
Navigation.NavigateTo(href);
}
}
@{
pss["pss"] = this;
}
위처럼 하게되면 pss 이름으로 NavMenu 객체를 담게 됩니다.
razor 페이지에서 @inject PublicScopeService 로 정의하고
버튼 클릭 이벤트에서 NavMenu 의 NavigatePage 호출합니다.
@using Blazor.RadzenTest.Services
@inject PublicScopeService pss
<RadzenButton Click="@MoveMenu" Text="Fetch Menu Move"></RadzenButton>
@code {
private void MoveMenu()
{
if (pss["NavMenu"] is NavMenu navMenu)
{
navMenu.NavigatePage("fetchdata");
}
}
}
이렇게 하게되면 PublicScopeService 에 원하는 razor 페이지를 담아서 처리가 가능해집니다.
또한 공용으로 사용할 것들을 전역으로 담아 처리 할 수 있습니다.
C# 두 List 를 번갈아 섞기 - LINQ ZIP (0) | 2024.04.02 |
---|---|
C# RadzenButton ToolTip / Busy indicator 표시하기 (0) | 2024.03.30 |
C# Dynamic Linq 처리하기 (0) | 2024.03.22 |
C# DataSet ReadXML 오류 '경로에 잘못된 문자가 있습니다.' (0) | 2024.03.13 |
C# DataTable은 Xml에서 스키마 유추를 지원하지 않습니다. (0) | 2024.03.13 |