Ajay
Ajay

Reputation: 653

Viewstate : NullReference exception ASP.NET

Well,I got a NullReference exception when I tried to execute out the code. I am just trying to save the current student instance in Viewstate["contents"].And the next time the page is being loaded it will show the previous instance members in the para tag.

//Code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{

    public student student1 = new student();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack) 
        {
            para1.InnerText = "Last entered values were" + ((student)ViewState["contents"]).fname.ToString() + ((student)ViewState["contents"]).lname.ToString();
        }
    }

    [Serializable]
    public class student 
    {
        public string fname { get; set; }
        public string lname { get; set; }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        student1.fname = TextBox1.Text;
        student1.lname = TextBox2.Text;
    }

    protected void Page_PreRender(object sender, EventArgs e)
    {
        ViewState["contents"] = student1;
    }
}

Upvotes: 0

Views: 1073

Answers (4)

Vignesh Kumar A
Vignesh Kumar A

Reputation: 28403

Try like this.

you need to check whether Viewstate is null or not before going to proceed

protected void Page_PreRender(object sender, EventArgs e)
{
   ViewState["contents"] = student1;
}
protected void Button1_Click(object sender, EventArgs e)
{
    student1.fname = TextBox1.Text;
    student1.lname = TextBox2.Text;
    ViewState["contents"] = student1;
}
protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack) 
        {
            if (ViewState["contents"] != null)
            {
                  para1.InnerText = "Last entered values were" + ((student)ViewState["contents"]).fname.ToString() + ((student)ViewState["contents"]).lname.ToString();
            }
        }
    }

Upvotes: 0

tarzanbappa
tarzanbappa

Reputation: 4958

public student student1 = new student();
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        [Serializable]
        public class student
        {
            public string fname { get; set; }
            public string lname { get; set; }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            student1.fname = TextBox1.Text;
            student1.lname = TextBox2.Text;

            ViewState["contents"] = student1;
        }

        protected void Page_PreRender(object sender, EventArgs e)
        {

            if (IsPostBack)
            {
                TextBox3.Text = "Last entered values were" + ((student)ViewState["contents"]).fname.ToString() + ((student)ViewState["contents"]).lname.ToString();
            }
        }

Upvotes: 0

Aby
Aby

Reputation: 1924

You will have to override the prerender.

protected override void OnPreRender(EventArgs e)
{
   base.OnPreRender(e);
   ViewState["contents"] = student1;
}

Upvotes: 1

Aditya Singh
Aditya Singh

Reputation: 9612

You are setting the value in the PreRender event which called after the Load event. So, try setting the value before Load event.

Content page PreInit event.
Master page controls Init event.
Content controls Init event.
Master page Init event.
Content page Init event.
Content page Load event.
Master page Load event.
Master page controls Load event.
Content page controls Load event.
Content page PreRender event.
Master page PreRender event.
Master page controls PreRender event.
Content page controls PreRender event.
Master page controls Unload event.
Content page controls Unload event.
Master page Unload event.
Content page Unload event.

Upvotes: 0

Related Questions