Reputation: 1686
I'm writing a page in ASP.NET and am having problems following the cycle of initialization on postbacks:
I have (something akin to) the following:
public partial class MyClass : System.Web.UI.Page
{
String myString = "default";
protected void Page_Init(object o, EventArgs e)
{
myString = Request["passedString"];
//note that I've tried to set the default here in Init on NULL...
}
protected void Page_Load(object o, EventArgs e)
{
if(!Postback)
{
//code that uses myString....
}
else
{
//more code that uses myString....
}
}
}
And what's happening is that my code picks up the "passedString" just fine, but for some reason, on postback, it resets to the default value - even if I put the assignment of the default in the Page_Init code... which makes me wonder what's going on..
Any help?
Upvotes: 3
Views: 3434
Reputation: 7850
Your class member variables do not live on once the response is sent to the browser. Try using the Session object instead:
public partial class MyClass : System.Web.UI.Page
{
protected void Page_Init(object o, EventArgs e)
{
Session["myString"] = Request["passedString"];
//note that I've tried to set the default here in Init on NULL...
}
protected void Page_Load(object o, EventArgs e)
{
string myString = (string) Session["myString"];
if(!Postback)
{
// use myString retrieved from session here
}
else
{
//more code that uses myString....
}
}
}
Upvotes: 4
Reputation: 43815
I feel your pain Matt. I asked a similar question a little while ago:
For a further understanding of the Page Life Cycle check out this question: What is the 'page lifecycle' of an ASP.NET WebForm?
Upvotes: 3