2010-01-12 3 views
2

ASP.NET 페이지에서 전체 세션 범위를 갖는 변수를 넣을 수 있습니까? (aspx 페이지 뒤에있는 클래스에서)? 변수를 Session 객체에 넣는 유일한 방법은 무엇입니까? 예를 들어ASP.NET 페이지에 세션 변수를 저장하고 있습니까?

:

public partial class Test_ : System.Web.UI.Page 
{ 
    private int idx = 0; 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     Button1.Text = (idx++).ToString(); 
    } 
} 

내 지수가 올라가이 버튼의 모든 클릭에합니다. 어떻게 Session 객체를 사용하지 않고 이것을 할 수 있습니까? 사전에

10 배, Danail는

+0

Session 개체와 어떤 이유가 있습니까? 내 관점에서 볼 때이 변수는 세션 변수이므로 여기에 속합니다. –

+0

세션에 지나치게 의존하면 서버에 성능 문제가 발생할 수 있습니다. +1 Marek의 대답에 대한 viewstate가 가장 올바른 선택입니다, 이것은 페이지와 포스트 백에 국한되어 있습니다. – StingyJack

답변

1

에 넣을 수 있습니다. Nine Options for Managing Persistent User State in Your ASP.NET Application을보십시오.

이러한 종류의 데이터의 경우 세션 저장소를 사용하는 것이 좋습니다.

+0

세션 상태는 이와 같은 데이터에 대해서는 좋지 않은 선택입니다. 세션 상태는 각 요청 및 사이트의 모든 페이지에 대해 필요로하는 페이지가 아닌 데이터베이스에 쓰고 읽을 수 있어야하기 때문에 좋지 않습니다. – RickNZ

3

당신은 세션 외에 여러 옵션이 있습니다 ViewState 대신

public partial class Test_ : System.Web.UI.Page { 

    protected void Button1_Click(object sender, EventArgs e) { 
     if(ViewState["idx"] == null) { 
      ViewState["idx"] = 0; 
     } 
     int idx = Convert.ToInt32(ViewState["idx"]); 

     Button1.Text = (idx++).ToString(); 

     ViewState["idx"] = idx; 
    } 
} 
+0

10x! 그게 문제에 대해 나에게 약간의 빛을 주었다;) 여전히 나는 세스 (seth)의 제안에 더 깊이 간다. – Danail

+0

분명히 좋은 읽을 거리 - 분명히 이것을 달성 할 수있는 방법이 많이 있습니다. –

2

ViewState는이 카운터의 범위 밖에서 유지 관리 할 필요가없는 한 여기에서 찾고있는 것 같습니다. 페이지 새로 고침은 카운터를 재설정한다는 것을 명심하십시오. 또한 카운터가 중요한 정보 인 경우 세션 값이 서버 측에 저장되는 반면 렌더링 된 HTML에 저장 (암호화)됩니다.

관련 문제