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
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
<%@ MasterType VirtualPath="~/TheTemplate.master" %>
Default.aspx.cs : ma content page en CODE-BEHIND
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 !!
1 2 3 4 5
| protected void Button1_Click(object sender, EventArgs e)
{
TheUser = Master.TheUser;
Literal1.Text = "Button : " + TheUser.Fullname;
} |
Merci d'avance :-)
Partager