2014-05-09 3 views
1

문제는 내가 다시 변수를 "되돌릴 때마다"값이 이전 값으로 유지되지 않고 항상 사전이 비어 있다는 것입니다. 이전에 저장된 데이터가 없습니다. 데이터를 저장하려면 어떻게해야합니까?전역 변수는 값을 유지하지 않습니다

public partial class MyCart : System.Web.UI.Page 
     { 
      public Dictionary<string, string> value = new Dictionary<string, string>(); 
      protected void Page_Load(object sender, EventArgs e) 
      { 
        TextBox textbox = new TextBox();     
        textbox.TextChanged += textbox_TextChanged; 
        textbox.ID = "textbox" + p.IDProduct.ToString(); 
        Button button = new Button(); 
      } 

      void textbox_TextChanged(object sender, EventArgs e) 
      { 
        value.Add(((TextBox)sender).ID, ((TextBox)sender).Text); 
      } 
} 

답변

3

global 변수가 다시 게시에 재현 당신은 아마 ViewState에서 변수를 넣어위한 포스트 백 사이에 데이터를 유지해야합니다

는 코드입니다.

데이터가 작 으면 ViewState과 비슷하지만 데이터가 큰 경우 데이터베이스의 대체 미디어가 될 수 있다고 생각할 수도 있습니다.

ViewState로 수행하려면 다음과 같은 것이 필요합니다.

public Dictionary<string, string> value = new Dictionary<string, string>(); 
protected void Page_Load(object sender, EventArgs e) 
{ 

    if(ViewState["valDic"] != null) 
     value = (Dictionary<string, string>)ViewState["valDic"]; 
    TextBox textbox = new TextBox();     
    textbox.TextChanged += textbox_TextChanged; 
    textbox.ID = "textbox" + p.IDProduct.ToString(); 
    Button button = new Button(); 
} 

void textbox_TextChanged(object sender, EventArgs e) 
{ 
    value.Add(((TextBox)sender).ID, ((TextBox)sender).Text); 
    ViewState["valDic"] = value; 
} 

뷰 상태는 ASP.NET 페이지 프레임 워크는 왕복 페이지 사이 및 제어 값을 유지하는 데 사용 방법이다. 페이지의 HTML 마크 업이 렌더링되면 페이지의 현재 상태와 다시 게시 중에 유지되어야하는 값이 base64 인코딩 문자열로 serialize됩니다. 이 정보는 상태 필드 또는 필드 MSDN보기에 배치됩니다.

<input id="Hidden1" type="hidden" runat="server" value=""/> 

코드 뒤에 : 그들은 recreated..You는 HTML 숨겨진 입력을 의존 할 수 있습니다로

+0

알겠습니다. 이해합니다. 고맙습니다 ! –

+0

당신은 환영합니다 – Adil

+1

덕분에 Adil Bhai .. 그것은 나를 많이 도왔습니다 – kashif

1

는 포스트 백 후 변수는

마크 업 .. 값을 잃게

Hidden1.value="something"; 
+0

감사합니다. 그건 좋은 속임수 야. –

+0

당신은 환영합니다, 친구 .. – Jameem

관련 문제