Bonjour
Je cherche à mettre à jour le menu NavMenu.razor, à partir d'informations obtenues dans les pages, en passant par une session
J'ai donc un projet qui référence Blazored.SessionStorage
La méthode SetItemAsync ne pose aucun problème. En revanche, quand j'essaie de récupérer les informations par GetItemAsync ou ContainKeyAsync, le programme se bloque
Les classes utiles sont
Dans Index.razor, j'ai le code suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public class SessionUser { public Boolean Complete { get; set; } = false; public string Nom { get; set; } public string Prenom { get; set; } public string Email { get; set; } } public class MenuInformation { public event Action OnChange; public void NotifyDataChanged() => OnChange?.Invoke(); }
Et dans navmenu.razor
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 protected async override Task OnAfterRenderAsync(bool firstRender) { var sessionInfo = new SessionUser() { Email = "monmail@test.com", Complete = false }; await sessionStorageService.SetItemAsync("UserInfo", sessionInfo); MenuInformation.NotifyDataChanged(); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 protected override void OnAfterRender(bool firstRender) { MenuInformation.OnChange += NavChange; } private async Task<SessionUser> RecupInfo() { if (await sessionStorageService.ContainKeyAsync("UserInfo")) { return await sessionStorageService.GetItemAsync<SessionUser>("UserInfo"); } return new SessionUser(); } private void NavChange() { var r = RecupInfo().GetAwaiter().GetResult(); StateHasChanged(); }
Ci joint le fichier projet 'allégé' complet
Merci pour votre aide
Partager