2010-02-04 5 views
1

Customer라는 엔티티에서 작업하기위한 데이터 입력/CRUD 양식과 같은 간단한 것을 작성한다고 가정 해 보겠습니다. SessionID를 통해 CustomerID를 전달한 것일 수 있습니다.상태에 액세스하기 위해 사용하는 구문/패턴은 무엇입니까?

나는 그 세션 변수를 특별한 방법으로 처리하는 것에 대해 많은 보편적 인 배관 코드를 작성하는 경향이있다. 목표는 다소 차이가 있지만 같은 것들 경향 :

  • 피가 배관 코드
  • 지능적으로
  • 이 세션에서 변수를 제거 뒤로 버튼을 처리와 페이지의 주요 흐름을 어수선하게하고 최대한 빨리 viewstate가 그것을 지속 방어 상태가 전달되지 않거나

당신이이 상황을 처리하기위한 가장 좋은 방법이 있나요 손실 실패 상황에

  • 코드? 매번 이것을 완벽하게 처리하는 클래스를 스택에 가지고 있습니까? 그냥 Session 변수를 직접 호출합니까? 뒤로 버튼을 좀 더 잘 작동 시키려면 암호화 된 QueryString을 사용하고 Session 변수를 완전히 피합니까?

    최근에는 세션 변수에 대한 속성을 사용하고 있습니다. 다음은 간단한 예를 염두에 두시기 바랍니다 있지만 난 그냥이 예제는 뒤로 가기 버튼의 매우 관대하지 않다고, 함께 던졌다입니다 :

    Private ReadOnly Property CustomerID() As Integer 
        Get 
         If Me.ViewState(Constants.CustomerID) Is Nothing Then 
          If Me.Session(Constants.CustomerID) Is Nothing Then 
           Throw New ApplicationException("CustomerID was not persisted.") 
          Else 
           Me.ViewState(Constants.CustomerID) = Me.Session(Constants.CustomerID) 
           Me.Session.Remove(Constants.CustomerID) 
          End If 
         End If 
    
         Return Me.ViewState(Constants.CustomerID) 
        End Get 
    End Property 
    

    그럼, 어떻게 당신의 가게는이 문제를 어떻게 처리합니까? 감사!

  • 답변

    1

    내가 작업 한 팀은 주로 웹 팜/가든에 대한 어려움 때문에 세션에서 이러한 종류의 워크 플로 정보를 전달하지 않습니다. 우리는 세션이 사용자가 사이트를 처음 방문한 순간부터 떠나는 순간까지 가장 관련이있는 정보의 컨테이너로 생각합니다. 그렇더라도 그 정보가 검색/빌드하는데 비용이 많이 들었을 때만 세션을 사용하고로드 밸런서가 사용자를 팜의 특정 서버에 고정 시키거나 적절한 아웃 오브 바운드 서버를 가지고 있음을 알고있는 경우에만 세션을 사용합니다. 프로세스 세션 공급자

    대신 쿼리 문자열, 숨겨진 입력 필드 또는 ViewState (사용하도록 설정된 경우)를 통해 이러한 유형의 정보를 전달하고 잘못된 값을 보내면 친숙한 오류 처리 기능을 제공합니다. 내역 관리가 중요한 경우 ASP.NET AJAX history management을 활용할 것입니다.

    +0

    숨겨진 입력 필드 또는 viewstate를 통해 데이터를 전달함으로써 의미가 무엇인지 궁금한 점이 있습니까? 교차 페이지 포스트 백에 대해 이야기하고 계신 것 같군요? 나는 아직 사용하지 않았다. –

    +0

    두 경우 모두 다른 URL로 게시하는 것에 대해 이야기하고 있습니다. ASP.NET WebForms를 사용하면 ViewState를 사용하여 교차 페이지 포스트 백이 될 수 있습니다. ASP.NET MVC에서는 'type = hidden'인 요소를 묶은 action 속성이 다른 URL로 설정된 간단한 HTML

    일 수 있습니다. WebForms에서 다중 페이지 플로우가있는 경우 똑똑한 사용자 컨트롤을 감싸는 마법사 또는 MultiView 웹 컨트롤을 사용하여 포스트 백을 동일한 페이지에 유지하고 다른 페이지로 물건을 전달할 필요가 없습니다. –

    관련 문제