Asp.net "Глобальные" переменные - PullRequest
3 голосов
/ 27 марта 2009

Я пишу страницу в ASP.NET, и у меня возникают проблемы после цикла инициализации постбэков:

У меня есть (что-то похожее) следующее:

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....
         }
    }
}

И что происходит, так это то, что мой код просто отлично воспринимает значение «StStString », но по какой-то причине при обратной передаче оно сбрасывается до значения по умолчанию - даже если я добавлю присвоение по умолчанию в коде Page_Init ... что заставляет меня задуматься о том, что происходит ..

Любая помощь?

Ответы [ 2 ]

4 голосов
/ 27 марта 2009

Ваши переменные-члены класса не живут после отправки ответа в браузер. Попробуйте вместо этого использовать объект Session:

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....
         }
    }
}
3 голосов
/ 27 марта 2009

Я чувствую твою боль, Мэтт. Я задал похожий вопрос недавно:

Чтобы лучше понять жизненный цикл страницы, задайте вопрос: Что такое «жизненный цикл страницы» веб-формы ASP.NET?

...