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

ASP.NET Discussion :

Erreur "La référence d'objet n'est pas définie à une instance d'un objet."


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Par défaut Erreur "La référence d'objet n'est pas définie à une instance d'un objet."
    Bonjour à tous,

    Je travaille actuellement sur le développement d'une iframe avec un choix multiple de thème, mais lorque je veux choisir une image, j'ai cette erreur qui bloque tout sur la ligne "Image1.Visible = true" et également sur "Image1.ImageUrl = "~/image/logo-big.png"" quand je choisi cette option:
    La référence d'objet n'est pas définie à une instance d'un objet.

    Description : Une exception non gérée s'est produite au moment de l'exécution de la requête Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.
    page maître:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="MonUrl" Target="_blank">		
    	<asp:Image ID="Image1" runat="server" ImageUrl="~/images/logo.png" /*ou*/ Visible="false" />
    	<asp:Image ID="Image2" runat="server" ImageUrl="~/images/logo-big.png" /*ou*/ Visible="false" />
    </asp:HyperLink><br />
    Code Behind
    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
    protected override void OnPreInit(EventArgs e)
    {
    if (Request["theme"] == "" || Request["theme"] == null)
    {
    	Theme = "default";
    	Image1.Visible = true;
    	//ou
    	Image1.ImageUrl = "~/image/logo-big.png"
    }
    else
    {
    	Theme = Request["theme"];
    	Image2.Visible = true;
    	//ou
    	Image2.ImageUrl = "~/image/logo-big.png"
    }
    }
    J'ai bien compris que c'est parce que Image est un objet, mais comment faire pour arriver à mon objectif? Je ne trouve pas de solution...

    Merci pour votre aide!

  2. #2
    Membre éprouvé Avatar de Joel Pinto Ribeiro
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 95
    Par défaut
    Et si tu fais ça dans la methode "OnInit" ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Par défaut
    Mais les thèmes doivent être chargé dans la méthode OnPreInit non?
    Je vais quand même essayer de faire comme ça.

    Après essaie, voici le résultat, nouvel erreur.
    "Informations supplémentaires : La propriété 'Theme' peut uniquement être définie dans l'événement 'Page_PreInit' ou avant celui-ci."
    Mais mon image s'affiche!

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Tu vas devoir découper ton code :

    La propriété Theme ne peut être settée dynamiquement QUE lors de l'évènement PreInit.

    Par contre, au moment du PreInit, ton objet Image n'est pas encore disponible. Il sera disponible à partir de l'évènement Init, une fois que tous les controls auront été initialisés.

    Il faut maîtriser un minimum le cycle de vie des pages ASP.NET : ASP.NET Page Life Cycle Overview.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Par défaut
    Effectivement! J'avais pas vu ça.

    Maintenant ça marche!
    Merci beaucoup!

    Voilà comment j'ai fais:
    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
    22
    23
    24
    25
    protected override void OnPreInit(EventArgs e)
    {
    if (Request["theme"] == "" || Request["theme"] == null)
    {
    	Theme = "default";
    }
    else
    {
    	Theme = Request["theme"];
    }
    }
     
    protected override void OnInitComplete(EventArgs e)
    {
    if (Request["theme"] == "" || Request["theme"] == null)
    {
    	Image1.Visible = true;
    	Image1.ImageUrl = "~/images/logo.png";
    }
    else
    {
    	Image7.Visible = true;
    	Image7.ImageUrl = "~/images/logo-big.png";
    }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/10/2011, 10h31
  2. Réponses: 6
    Dernier message: 31/03/2010, 09h56
  3. Réponses: 7
    Dernier message: 31/12/2009, 09h10
  4. Réponses: 0
    Dernier message: 29/12/2009, 09h51
  5. Réponses: 8
    Dernier message: 04/06/2007, 16h20

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