2012-07-26 4 views
0

가정하자 나는 다음과 같은 asp.net 페이지가 :페이지 범위 변수 사라지게

public partial class SamplePage : System.Web.UI.Page 
{ 
    private int UserID; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 

    protected void btnSearchUser_Click(object sender, EventArgs e) 
    { 
     UserID = 5; 
    } 

    protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     Response.Write(UserID.ToString()); 
    } 
} 

을하지만, 사용자 ID는 항상 5 할 달성하기 위해 어떻게 항상 0입니다

답변

2

HTTP 프로토콜이 무 상태이기 때문에 버튼을 클릭하면 포스트 백이 발생하고 포스트 백이 발생하므로 데이터가 항상 손실되므로 .. 해당 값을 유지하려면 viewIDate에 해당 UserID를 저장해야합니다. Asp.net에서의 Mangement의 개념. 이처럼 그것을 달성 할 수 그러나 ...

public partial class SamplePage : System.Web.UI.Page 
{ 
    int UserID; 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
protected void btnSearchUser_Click(object sender, EventArgs e) 
{ 
    UserID=5; 
    ViewState["UserID"] = UserID; 
} 
protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    if(ViewState["UserID"]!=null) 
    Response.Write(ViewState["UserID"].ToString()); 
} 
} 
+0

더 후 한번의 ViewState를 조회하지 마십시오 (2 회를 귀하의 코드에서). – abatishchev

+1

왜? 그 이유는 ...? –

0

당신이 현재 컨트롤의 뷰 상태로 배치 할 필요가 포스트 백간에 데이터를 계속하려면 다음

private int UserID 
{ 
    get 
    { 
     return this.ViewState["UserID"] as int? ?? -1; // if data is missing, default value -1 will be returned 
    } 
    set 
    { 
     this.ViewState["UserID"] = value; 
    } 
}