Blazor 服务器端 - 从父组件(主布局)到子组件(页面)共享值

Blazor Server Side - sharing values from Parent (Mainlayout) to Child Component (Pages)

大家好

在我的项目上,我创建了一个简单的 cookie 身份验证,现在在我的 MainLayout.razor 上,并创建了一个单独的代码文件 (MainLayout.razor.cs),现在在代码文件上,我把获取经过身份验证的用户的代码。

            var AuthState = await authenticationStateProvider.GetAuthenticationStateAsync();
            var GetUser = AuthState.User;
            string strUser = AuthState.User.Claims.First().Value.ToString();
            EmpDetails GetEmpDetails = myServices.GetUserDetails(strUser)

现在,我希望 GetEmpDetails 与子组件共享它,我当前的设置是,我必须在每个页面上再次调用此代码,有没有办法将它从父组件共享到子组件?

感谢和问候

加class赞

public class DataService
{
    public Dictionary<string, EmpDetails> EmpDetails { get; set; }
}

在Program.cs注册服务,可能是Startup.cs

builder.Services.AddSingleton<DataService>();

现在在 MainLayout 中

[Inject]
private DataService DataService { get; set; }
        
if (DataService.EmpDetails.ContainsKey(EmpLoginId))
    DataService.EmpDetails.Remove(EmpLoginId);
DataService.EmpDetails.Add(EmpLoginId, EmpDetails);

现在在任何 blazor 组件中

[Inject]
private DataService DataService { get; set; }

你可以获得喜欢的用户

var empDetails = DataService.EmpDetails[EmpLoginId];