2013-12-20 2 views
0

새 값으로 업데이트하지 않는 세션 변수가 있습니다. 두 페이지가 있습니다. 하나는 값을 입력하고 버튼에 klick을 입력하면 페이지 2로 리디렉션됩니다. 입력 한 내용을 확인할 수 있습니다. 잘못 입력 한 경우 다시 버튼을 클릭하면 첫 페이지로 돌아갑니다. 입력을 변경할 수 있지만 이제 버튼을 클릭하여 새 값이 세션 변수에 표시되지 않고 이전 값만 표시되는지 다시 확인합니다. 내가 마지막 날에 대한 세션을 readingabout되었지만 난 그냥 캔트 문제를 발견, 뒤에서 코드는 다음과 같습니다 :세션 변수가 이전 값을 가지고 있으며 페이지 리디렉션으로 업데이트해야합니다.

페이지 1

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (this.Session["value1"] != null) 
    { 
     lbl1.Text = (String)this.Session["value1"].ToString(); 
    } 
} 

public string info { get { return lbl1.Text; } } 

protected void inputButton_onclick(object sender, EventArgs e) 
{ 
    Page.Validate(); 

    if (Page.IsValid) 
    { 
     Session["value1"] = info; 

     Response.Redirect("~/validpage.aspx"); 
    } 

} 

에게 어쩌면 내가 내 자신을 staired 한 페이지 2

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Session["value1"] != null) 
    { 
     lbl2.Text = (String)Session["value1"].ToString(); 
    }   
} 

protected void BackButton_Click(object sender, EventArgs e) 
{ 
    Session["value1"] = lbl2.Text; 

    Response.Redirect("~/Default.aspx"); 
} 

나에게이 코드를 보지 못하면이 문제가 나타나서는 안된다. 어떤 아이디어와 도움을 주시면 감사하겠습니다.

+1

왜 'BackButton_Click'에서 세션 값을 설정하나요? –

+0

첫 번째 화면에서 foo를 입력 한 경우'inputButton'을 클릭하면 2 페이지의 lbl2에 foo가 표시되지만 2 페이지에 bar를 입력하고 'BackButton'을 클릭하면 foo가 1 페이지에 계속 표시됩니까? –

+1

Page 1이'lbl1'은 레이블 또는 텍스트 상자이며 세션 값을 어디에서 변경합니까? –

답변

1

페이지 1이로드 될 때마다 lbl1은 설정되지 않은 한 세션의 내용으로 설정됩니다. 따라서 버튼을 클릭하면 lbl1이 페이지가로드 될 때 세션의 내용으로 다시 설정됩니다. 그런 다음이 값을 &으로 다시 읽지 만 세션에서는 다시 나타납니다.

대신이 시도 : 우리가 다시 게시하지 않는 경우에만 즉, 페이지에 버튼을 클릭하지, 값을 설정 말한다

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostback) 
    { 
     if (this.Session["value1"] != null) 
     { 
      lbl1.Text = (String)this.Session["value1"].ToString(); 
     } 
    } 
} 

.

페이지 2에서도 ToString을 호출하고 문자열로 캐스트 할 필요가 없습니다. 둘 중 하나만 수행하십시오.

+0

감사합니다. Simon! 이 문제를 해결, 지금은 그냥 나머지 모든 정렬;) 좋은 하나 되세요! – user1501127

관련 문제