2011-03-30 2 views
2

ASP.NET 4.0 웹 양식 웹 사이트ASP.NET UpdatePanel 컨트롤

마스터 페이지와 이전 페이지를 (viewstate가 유지) 이동 (AJAX)를 UpdatePanel 컨트롤을 사용하기 때문에 선택하는 경우 새 메뉴를 선택하면 전체 페이지가 다시로드되지 않습니다. 콘텐츠 부분 만 업데이트됩니다.

내 질문은 - 브라우저의 뒤로 버튼을 사용하여 이전 메뉴로 돌아갈 수 있기를 원합니다 (양식 상태 저장). 그러나 viewstate를 조사 할 때 항상 동일합니다. 이 일을 할 수있는 방법이 있습니까? 감사.

답변

1

사용자가 메뉴에서 메뉴 항목을 선택하면 해당 변수를 세션 변수와 페이지로드에 배치하는 것이 좋습니다. 그런 다음 사용자가 브라우저 뒤로 버튼을 누를 때 세션 변수에 값이 있으므로 페이지로드시 메뉴를 설정할 수 있습니다.

+0

소리가 좋습니다. 그러나 viewstate도 저장할 수 있습니까? 그래서 돌아 가면 모든 형태가 남아있을 것입니다. – Stan

+1

@Stan; 그렇게 생각하지 않지만 viewstate를 실제로 저장하려면 asp.net 4.0에 Viewstate를 Session State에 저장할 수있는 옵션이 있습니다. –

+0

@MuhammadAkhtar 이전 버전의 ASP.NET에서도이를 수행 할 수 있습니다 (즉, 사용자 지정 ViewState 공급자를 사용할 수 있음). –

0

pst가 가리키는 것은 "교차 페이지 게시"입니다.

소스 페이지에서 asp 버튼의 postbackurl을 대상 페이지 URL로 설정해야합니다.

대상 페이지 C# onload 메서드에서 page.previouspage를 소스 페이지로 설정하십시오. 이전 페이지의 게시물이 크로스 페이지 포스트인지 확인하십시오.

참이면 zource 페이지의 viewstate를 가져옵니다.

대상 페이지에서 원본 페이지의 viewstate에 어떻게 액세스합니까? 대상 페이지로 이동하기 전에 원본 페이지의 viewstate를 원본 페이지에 저장하십시오. 소스 페이지에서 ASP 숨겨진 변수에 viewstate를 저장 한 다음 previouspage.findcontrol ("variable name")을 사용하여 대상 페이지에서 가져옵니다.

원본 페이지의 viewstate를 가져온 후 대상 페이지의 ASP 숨김 변수에 저장하십시오.

원본 페이지로 돌아가려면 위의 모든 작업을 역순으로 수행해야합니다.

"이전 페이지로 돌아 가기"링크 버튼은 포스트 백 (post backurl) 값에 대한 소스 페이지 URL을 사용합니다.

원본 페이지의 onload C# 메서드에서 page.previouspage url을 대상 페이지의 URL로 설정하십시오. 이전 페이지의 게시물이 교차 페이지 게시물인지 확인하십시오.

true 인 경우 대상 페이지에서 반환 한 후 원본 페이지에서 previouspage.findcontrol ("savedSourcePageViewstate")을 사용하여 원본 페이지의 저장된 viewstate를 가져옵니다.

원본 페이지의 viewstate를 저장된 viewstate로 변경하는 방법이 확실하지 않습니다. 실제로 대상 페이지의 backttopreviouspage 페이지의 클릭 핸들러에서이를 수행해야 할 수도 있습니다.

저는 현재 직장에서 개발중인 프로젝트에서이 프로세스를 개발하고 있습니다.

내가 작동하게되면 코드 예제와 함께 전체 연습을 만들고 여기에 연습용 링크를 게시합니다.

그러나 이미 대상 페이지의 소스 페이지에서 데이터를 가져 오는 교차 페이지 게시 프로세스가 있습니다.

이것은 안전하며 asp.net webforms 응용 프로그램의 한 페이지에서 다른 페이지로 데이터를 가져 오는 가장 좋은 방법입니다.

관련 문제