2009-03-27 4 views
3
내가 포스트 백에 초기화의주기 다음 ASP.NET에서 페이지를 쓰고 있어요와 데 문제가

: 내가 가지고있는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.... 
     } 
    } 
} 

그리고 내 코드에서 "passedString"을 올바르게 선택하지만 재발신시 기본값으로 재설정됩니다. Page_Init 코드에 기본값 할당을하더라도 ... 어떤 일이 벌어 질지 궁금합니다.

도움이 필요하십니까?

+0

전달 된 문자열은 양식 값 또는 쿼리 문자열입니까? –

답변

4

클래스의 멤버 변수에 거주하지 않는 :이 질문을 확인 페이지 수명주기의 추가 이해를 위해

: 나는 조금 전에 비슷한 질문을했다. 대신 세션 객체를 사용하십시오 :

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

감사합니다. – matthewdunnam

+0

"브라우저에 응답을 보내면 클래스 멤버 변수가 사라집니다." 다시 말하면, 각각의 포스트 백이 페이지 클래스의 새로운 인스턴스로 작업하고 있습니다. –

3

나는 당신의 고통을 느낍니다. 응답이 브라우저로 전송되면 What is the 'page lifecycle' of an ASP.NET WebForm?

+0

이것은 정확히 내가 찾던 것이 아니었지만 매우 유용한 정보였습니다. 감사! – matthewdunnam

+0

기꺼이 도와 드리겠습니다. (답변을받지 못하더라도!) –