2017-05-16 1 views
0

이것은 어리석은 질문 일 수 있습니다. 그러나 이것이 과거 2 개가 증가하지 않는 이유는 무엇입니까? 아무리 내가 레이블이 레이블은 1에서 시작 버튼을 누를 때 등 2-3-4 같은 번호를 추가하도록되어 2ASP.NET C# : 단추 누르기의 레이블 개수

protected void nextBtn_Click(object sender, EventArgs e) 
    { 
      questions = 1; 
      questions++; 
      qstnLbl.Text = questions.ToString(); 
    } 

에 붙어있는 버튼을 클릭 몇 번

내가 놓친 게 있니?

답변

1

웹은 상태 비 저장입니다. questions은 각 포스트 백마다 1로 초기화되므로 값은 항상 2입니다.

상태가 세션을 사용하여 유지되는 경우 아래로 코드를 변경하십시오

protected void nextBtn_Click(object sender, EventArgs e) 
{ 
    questions = 1; 
    if (Session["questions"] != null) 
     questions = (int)Session["questions"]; 
    questions++; 
    Session["questions"] = questions; 
    qstnLbl.Text = questions.ToString(); 
} 

웹에서 상태를 유지하는 방법에는 여러 가지가 있습니다. 더 자세한 정보를 얻으려면 link을 방문하십시오. 심지어이 때문에 작동하지 않을 콘솔이나 데스크톱 응용 프로그램에서

+0

물론 세션은 저를 기다리고 있습니다. 메신저는 여전히이 ASP.NET에 대해 배우고 있으며 세션은 지금 큰 고통이되었습니다. 이것은 완벽하게 일했습니다, 고마워요! –

+0

예, ASP.NET에서 상태를 유지 관리하는 것은 어려운 일입니다. 대답에서 말했듯이 상태를 유지하기 위해 링크에서 언급 된 다른 방법을 시도해 볼 수도 있습니다. 다른 사람에게 명확하게 답변을 수락하십시오. – Boney

0

모든 당신은 또한 HTTP 1.

다른 답변에서 언급 한 바와 같이 상태를 저장에 값을 다시 초기화된다 클릭합니다.

0

값을 증가시키는 방법은 정확하지만 버튼 클릭시 값 변수 1을 선언하고 값을 할당하므로 값은 항상 2입니다. 그래서 버튼을 클릭하면 질문 변수 변수 1을 가지고 2로 증가하고 레이블에 표시됩니다.

그래서 문제를 해결하기 위해서는 그 것을 파괴하지 않는 한 질문 변수를 영원히 보유 할 수있는 무언가를 사용해야합니다. 따라서 ViewState, 세션 또는 쿠키를 사용할 수 있습니다.

세션 사용.

protected void nextBtn_Click(object sender, EventArgs e) 
{ 
    int questions = Session["questions"] ==null? 1: 
     Convert.ToInt32(Session["questions"]);   
    questions++; 
    Session["questions"] = questions; 
    qstnLbl.Text = questions.ToString(); 
} 

마찬가지로 세션 대신 ViewState 또는 쿠키를 사용할 수 있습니다.