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



大家好

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

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

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

感谢并问候

添加类似的类

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];

最新更新