2012-07-31 3 views
2

그래서 그리드 열 정렬을 처리하기 위해 많은 페이지에서 사용하는 인터넷에서 "빌린"방법이 있습니다.도우미 클래스의 참조 세션

 private string GetSortDirection(string column) 
    { 

     // By default, set the sort direction to ascending. 
     string sortDirection = "ASC"; 

     // Retrieve the last column that was sorted. 
     string sortExpression = ViewState["SortExpression"] as string; 

     if (sortExpression != null) 
     { 
      // Check if the same column is being sorted. 
      // Otherwise, the default value can be returned. 
      if (sortExpression == column) 
      { 
       string lastDirection = ViewState["SortDirection"] as string; 
       if ((lastDirection != null) && (lastDirection == "ASC")) 
       { 
        sortDirection = "DESC"; 
       } 
      } 
     } 

     // Save new values in ViewState. 
     ViewState["SortDirection"] = sortDirection; 
     ViewState["SortExpression"] = column; 

     return sortDirection; 
    } 

는 지금은 잘 작동하지만, 슬프게도, 나는 그것이 viewstate가를 참조하므로에서 호출 할 모든 페이지에 복사해야합니다. 그래서 그것을 도우미 클래스로 옮기고 대신 세션 상태로 저장하려고합니다. 그러나 도우미 클래스에서 상태를 참조 할 수는 없습니다.

도움말 클래스에서 세션에 액세스 할 수있는 방법이 있습니까? 세션 상태를 참조로 전달할 수 있습니까?

답변

3

질문을 올바르게 이해하면 페이지가 아닌 클래스에서 ViewState 또는 Session에 액세스하려고합니다.

그렇다면, 당신은 당신이 Page를 입력 HttpContext.Current.CurrentHandler을 캐스트, 다음 ViewState에 액세스 할 수 있어야합니다, HttpContext.Current.Session 사용하거나 할 수 있습니다.

또는 항상 코드를 System.Web.UI.Page에서 상속하는 것이 아니라 모든 페이지가 상속하는 기본 클래스에 넣을 수 있습니다.

+0

기본 클래스를 만드는 방법에 대해 살펴 보았습니다. 간단하고 간단했습니다. – Limey

+0

OO 디자인을위한 만세! – wsanville

1

세션을 테스트 할 경우 사용자 1이 하나의 열 1을 선택하고 페이지를 변경하고 동일한 선택 열을 갖게되므로 initilize 페이지를 사용할 때 문제가 발생하므로 세션을 사용하지 마십시오. , 그는 초기 상태 및 선택된 상태가 없어야합니다.

기술적으로 당신은 세션을 사용할 수 있지만 나를 위해 functionaly는

+0

세션에 저장할 필요가 없습니다. 제 생각에는 모든 중복 된 방법을 없애는 것입니다. – Limey

+0

또한 BasePage를 만들 수 있으며 페이지에서이 클래스에서 상속하는 방법을 사용하면 –

1

당신은 System.Web을 참조하고 웹 프로세스에서 실행되는 모든 어셈블리에 HttpContext.Current.Session을 사용할 수있는 시스템 권장 아니에요.

그러나 일반 (예 : 여러 장소, 비 특정 키에서 재사용) 값을 세션에 넣으면 모든 문제가 발생합니다. 예를 들어 사용자가 동일한 세션에서 두 개의 브라우저 창을 열면 어떻게됩니까?

나는 Page/Control/UserControl 클래스 중 하나를 제안하거나 페이지의 데이터로 초기화되는 도우미 클래스를 제안합니다. 코드 샘플은 컨트롤 관련 기본 클래스에 속하는 것처럼 보이게됩니다.

1

그러나 System.Web.HttpContext.Current를 사용할 수 있지만 이와 같은 세션 상태를 사용하여 몇 가지 동기화 문제가 발생할 수 있습니다. GetSortDirection 메서드를 쉽게 구현할 수있는 페이지의 확장 메서드로 추가 할 수 있습니다.

+0

asp.net을 처음 사용하기 때문에 확장 메서드를 수행하는 방법이 불확실합니다. 내가 할 일이있을 것 같아. – Limey

관련 문제