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 :

[C#] NullReferenceException après un PostBack ?!


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Mars 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2006
    Messages : 88
    Points : 50
    Points
    50
    Par défaut [C#] NullReferenceException après un PostBack ?!
    Bonjour à tous,

    J'ai une MasterPage avec un Objet public (TheUser, type myUser) qui est utilisé dans toutes mes Content page. Lors du load de ma page j'ai donc mon objet accessible dans ma content page sans aucun soucis. Puis lorsque je clique sur mon Bouton, j'ai une NullReferenceException qui apparait pour l'objet en question. Je ne comprends pas pourquoi .. Voici mon code :

    TheTemplate.master.cs : ma masterpage
    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
        public myUser TheUser;
     
        protected void Page_Load(object sender, EventArgs e)
        {
            TheUser = (myUser)Session["TheUser"];
            if (TheUser != null)
            {
                // logged in
            }
            else
            {
                // logged out
                TheUser = new myUser();
            }
            TheUser.Fullname = "Nom!";
        }
    Default.aspx : ma content page en DESIGN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ MasterType VirtualPath="~/TheTemplate.master" %>
    Default.aspx.cs : ma content page en 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
     
    public partial class _Default : System.Web.UI.Page
    {
        public myUser TheUser;
     
        protected void Page_Load(object sender, EventArgs e)
        {
            this.LoadComplete += new EventHandler(Page_LoadComplete);
        }
     
        protected void Page_LoadComplete(object sender, EventArgs e)
        {
            TheUser = Master.TheUser;
            Literal1.Text = TheUser.Fullname; // tout est bien affiché (objet ok)
        }
     
        protected void Button1_Click(object sender, EventArgs e)
        {
            Literal1.Text = "Button1_Click : " + TheUser.Fullname; // System.NullReferenceException
        }
    }
    Donc l'exception [System.NullReferenceException: Object reference not set to an instance of an object.] est dans la fonction Button1_Click. Ca se déroule donc quand je click. Sachant que si j'enlève cette ligne et que je click donc qu'il se passe "rien" sauf un postback ca ne me met aucune exception pour le "Literal1.Text = TheUser.Fullname;" de la fonction Page_LoadComplete et au contraire, ca m'affiche bien la valeur de la propriété de l'objet.

    Quelqu'un aurait une idée ? Où se nullifie l'objet ? Car si je mets le code ci-dessous ca marche .. Mais c'est pas très propre car là j'ai qu'un button mais si j'ai 36 évènements pour 36 buttons/listbox/hyperlink/etc ca ne sera plus lisible !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        protected void Button1_Click(object sender, EventArgs e)
        {
            TheUser = Master.TheUser;
            Literal1.Text = "Button : " + TheUser.Fullname;
        }
    Merci d'avance :-)

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 91
    Points : 90
    Points
    90
    Par défaut
    Quand tu fais n postback tu es obligé de refaire cette affectation.
    Grégory Schiro

    Blog PowerShell & MOF
    http://scriptingof.blogspot.com

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/12/2006, 15h07
  2. Réponses: 2
    Dernier message: 14/09/2006, 12h04
  3. Réponses: 3
    Dernier message: 22/08/2006, 15h38
  4. [vb.net] probleme de datasource perdu apres le postback
    Par graphicsxp dans le forum ASP.NET
    Réponses: 12
    Dernier message: 03/03/2006, 16h29
  5. Réponses: 5
    Dernier message: 16/02/2006, 16h27

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