2011-09-02 3 views
1

사용자가 특정 페이지를 사용하여 많은 정보를 입력 할 수있는 사이트가 있습니다. 사용자가 해당 페이지를 탐색하는 경우 사용자가 해당 페이지로 돌아와 이전에 추가 한 모든 정보를 유지할 수 있도록 세션 변수를 저장하고 싶습니다.사용자 지정 IHttpModule을 사용하여 페이지 변경 정보 저장

맞춤 IHttpModule을 만들었습니다. 내 의도는 사용자가 페이지를 클릭 할 때주의를 끌기 위해이를 활용하는 것이 었습니다. 그런 다음 페이지에 액세스하고 여기에서 변수를 가져 와서 나중에 다시 채우기 위해 저장할 수 있습니다.

는 여기에 내가있어 무엇 :

public void Init(HttpApplication application) 
{ 
    application.BeginRequest += (new EventHandler(this.Application_MovePages)); 
} 

private void Application_MovePages(Object source, EventArgs e) 
{ 
    HttpApplication application = (HttpApplication)source; 
    HttpContext context = application.Context; 
    System.Web.Ui page; 

    if (HttpContext.Current.Handler != null) 
    { 
     page = (System.Web.Ui.Page)HttpContext.Current.Handler; 
    } 
} 

문제는 HttpContext.Current.Handler는 항상 null입니다. 여기 뭔가 빠졌어.

+1

서버에 제출되지 않은 경우 페이지의 정보를 어떻게 얻을 수 있습니까? – R0MANARMY

답변

2

먼저 사용자의 정보가 지속적으로 저장되는지 확인해야합니다 (예 : Google 문서에서 초안/문서와 같이). 이렇게하려면 양식을 직렬화하여 저장하라는 아약스 요청을 통해 양식을 직렬화해야합니다. 사용자가 탐색 할 때 문서가 저장되지 않았 으면 메시지를 표시해야합니다. 저장을 선택하면 jQuery로 양식을 직렬화하고 저장하기 위해 페이지로 보냅니다. 해당 페이지의 응답에는 나중에이 정보를 조회하는 데 사용할 쿠키 세션 값 (guid)이 포함됩니다. 이 토큰은 전선에서 냄새를 맡을 수 있으므로 SSL을 통해이 작업을 수행합니다.

http 모듈이 필요하지 않습니다. 어떤 페이지에서든이 작업을 수행 할 수있는 응용 프로그램 위에 원하는 것을 원하지 않는 한이 페이지를 저장하는 페이지가 있으면됩니다. 당신은 여전히 ​​매우 특정 페이지에 문제가 있습니다. 당신은 ajax를 통해 작동하기 위해 '저장'루틴을 개발하고, 양식 정보를 직렬화하고, 저장하고,로드 메커니즘을 가질 필요가 있습니다.

다시 .. 사용자가 페이지를 떠날 때이 정보를 저장하는 방법을 기억하십시오. 그것은 당신이 원하는 방식을 결정하는 데 필요한 것입니다.

관련 문제