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];
大家好
在我的项目上,我创建了一个简单的 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];