2013-05-06 2 views
2

새로운 세션을 만들고 싶습니다. 여기서 텍스트 상자에 입력 된 내용은 해당 세션에 저장됩니다. 그런 다음 다른 aspx 페이지에서 레이블에 해당 세션을 표시하고 싶습니다.C#에서 세션 변수를 선언하는 방법은 무엇입니까?

저는 이것을 시작하는 방법과 모든 것을 넣을 곳이 확실하지 않습니다.

는 내가 필요 해요 알고 :

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Session["newSession"] != null) 
    { 
     //Something here 
    } 
} 

그러나 나는 모든 것을 넣어 경우 아직 확실 해요.

+0

나는 그 질문을 보았지만 나의 것은 해시 테이블을 포함하지 않는다. – Carrie

+0

@Carrie'HashTable'을'TextBox.Text'로 대체하십시오 - 비올라! – Jesse

답변

8

newSessionSession 변수의 이름이 잘못되었습니다. 그러나 이미 완료 한 것처럼 인덱서를 사용해야합니다. 가독성을 높이려면 대신 정적 인 속성을 사용할 수 있습니다. 그런 다음 인스턴스없이 두 번째 페이지의 첫 번째 페이지에서 액세스 할 수 있습니다.

페이지 1 (또는 당신이 좋아하는 곳) : 이제

public static string TestSessionValue 
{ 
    get 
    { 
     object value = HttpContext.Current.Session["TestSessionValue"]; 
     return value == null ? "" : (string)value; 
    } 
    set 
    { 
     HttpContext.Current.Session["TestSessionValue"] = value; 
    } 
} 

당신은/얻을에서 첫 페이지에 예를 들어, 모든 곳에서 설정할 수있는 TextChanged -handler :

protected void TextBox1_TextChanged(Object sender, EventArgs e) 
{ 
    TestSessionValue = ((TextBox)sender).Text; 
} 

및 두 번째 페이지에서 읽으십시오 :

protected void Page_Load(Object sender, EventArgs e) 
{ 
    this.Label1.Text = Page1.TestSessionValue; // assuming first page is Page1 
} 
+0

짧은 가져 오기 { return (string) HttpContext.Current? Session [ "TestSessionValue"] ?? ""; } –

관련 문제