object reference-error with programmatically loading user control

Discussion in 'ASP .Net' started by Martine, Aug 5, 2003.

  1. Martine

    Martine Guest

    Hi there!

    I have a problem with programmatically adding user controls to my
    mobile webforms. If I load my usercontrol programmatically (in the
    Page_Load), the object is instantiated, I have access to the methods
    and properties from the Page_Load, no problem there. But as soon as I
    want access to the user control from another procedure on the same
    page, I get the next error message:

    "Object reference not set to an instance of an object."

    When I declaratively add the user control to my page, everything's ok,
    I have access to the user control from the other procedure. In this
    particular case, declaratively adding the user control is ok, but I
    would really like to know what I am doing wrong in the first case.

    Code is below. The last line of code, in Command_Login_Click is
    causing the error. The exact same line works fine in Page_Load. Also,
    it works fine in the Page_Load and Command_Login_Click when the
    control is declaratively added.

    Any help would be much appreciated!
    seeyoubye, Martine.
    ---------------------------
    CODE IN LOGIN.ASPX.CS:

    protected tank.user newUser;

    private void Page_Load(object sender, System.EventArgs e)
    {
    Control newUser = LoadControl("user.ascx");
    Page.Controls.Add(newUser);
    }

    public void Command_Login_Click(object sender, System.EventArgs e)
    {
    testlabel.Text = ((user)newUser).Function.ToString();
    }

    CODE IN LOGIN.ASPX:

    <%@ Reference Control="user.ascx" %>

    CODE IN USER.ASCX.CS:

    public abstract class user : System.Web.UI.UserControl
    {
    public String Function
    {
    get
    {
    return "test";
    }
    set
    {
    Session["User_Function"] = value;
    }
    }
    }
     
    Martine, Aug 5, 2003
    #1
    1. Advertising

  2. Martine

    Jay Warmack Guest

    Martine,

    Something seems wrong here:

    protected tank.user newUser;

    private void Page_Load(object sender, System.EventArgs e)
    {
    Control newUser = LoadControl("user.ascx");
    Page.Controls.Add(newUser);
    }

    You declare newUser as a protected object of type tank.user, this seems
    right. But then in the Page_Load you declare newUser as an object of type
    Control where you then assign it a reference to the object returned from
    LoadControl. In this case the newUser object is now just a local reference
    variable in the Page_Load method. So your reference in the Login method
    will have a null object reference because you never assigned an object to
    the protected reference variable. Make sense?

    So what I would do is change your code to this:

    protected tank.user newUser;

    private void Page_Load(object sender, System.EventArgs e)
    {
    newUser = LoadControl("user.ascx");
    Page.Controls.Add(newUser);
    }

    See if that works,

    Jay Warmack, MCAD
    IT Consultant


    "Martine" <> wrote in message
    news:...
    > Hi there!
    >
    > I have a problem with programmatically adding user controls to my
    > mobile webforms. If I load my usercontrol programmatically (in the
    > Page_Load), the object is instantiated, I have access to the methods
    > and properties from the Page_Load, no problem there. But as soon as I
    > want access to the user control from another procedure on the same
    > page, I get the next error message:
    >
    > "Object reference not set to an instance of an object."
    >
    > When I declaratively add the user control to my page, everything's ok,
    > I have access to the user control from the other procedure. In this
    > particular case, declaratively adding the user control is ok, but I
    > would really like to know what I am doing wrong in the first case.
    >
    > Code is below. The last line of code, in Command_Login_Click is
    > causing the error. The exact same line works fine in Page_Load. Also,
    > it works fine in the Page_Load and Command_Login_Click when the
    > control is declaratively added.
    >
    > Any help would be much appreciated!
    > seeyoubye, Martine.
    > ---------------------------
    > CODE IN LOGIN.ASPX.CS:
    >
    > protected tank.user newUser;
    >
    > private void Page_Load(object sender, System.EventArgs e)
    > {
    > Control newUser = LoadControl("user.ascx");
    > Page.Controls.Add(newUser);
    > }
    >
    > public void Command_Login_Click(object sender, System.EventArgs e)
    > {
    > testlabel.Text = ((user)newUser).Function.ToString();
    > }
    >
    > CODE IN LOGIN.ASPX:
    >
    > <%@ Reference Control="user.ascx" %>
    >
    > CODE IN USER.ASCX.CS:
    >
    > public abstract class user : System.Web.UI.UserControl
    > {
    > public String Function
    > {
    > get
    > {
    > return "test";
    > }
    > set
    > {
    > Session["User_Function"] = value;
    > }
    > }
    > }
     
    Jay Warmack, Aug 5, 2003
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Pedro Correia
    Replies:
    0
    Views:
    642
    Pedro Correia
    Jul 25, 2003
  2. Replies:
    0
    Views:
    2,095
  3. Phoenix
    Replies:
    2
    Views:
    257
    Teemu Keiski
    Jun 6, 2005
  4. Monty
    Replies:
    5
    Views:
    423
    Monty
    Mar 30, 2006
  5. gishani ratnayake via .NET 247

    User Control Error : Object reference not set to an instance of an object.

    gishani ratnayake via .NET 247, Mar 11, 2005, in forum: ASP .Net Web Controls
    Replies:
    1
    Views:
    186
Loading...

Share This Page