IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Framework .NET Discussion :

Blazor Mettre à jour NavMenu en fonction d'informations obtenues au fur et à mesure


Sujet :

Framework .NET

  1. #1
    Membre du Club
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Juillet 2011
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 32
    Points : 41
    Points
    41
    Par défaut Blazor Mettre à jour NavMenu en fonction d'informations obtenues au fur et à mesure
    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
    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();
        }
    Dans Index.razor, j'ai le code suivant

    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();
    	}
    Et dans navmenu.razor
    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
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/03/2007, 08h58
  2. Réponses: 3
    Dernier message: 26/09/2006, 11h17
  3. Réponses: 6
    Dernier message: 25/09/2006, 14h11
  4. mettre à jour un dataset en fonction des valeurs qu'il contient ?
    Par isachat666 dans le forum Bases de données
    Réponses: 2
    Dernier message: 07/06/2006, 13h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo