2009-07-27 8 views
15

여기에 몇 가지 비슷한 질문이 있지만 실제로 내 요구 사항을 해결하는 것은 없습니다.뒤로 버튼 새로 고침 페이지

한 페이지에 항목 목록이 있으며 masterlist.aspx라고 할 수 있습니다. 이 목록 항목 중 하나를 클릭하면 다른 페이지 (예 : details.aspx? id = something)가 나타납니다.

나타나는 페이지에 편집 모드에서 formview 컨트롤이 있습니다. 사용자가 편집 링크 버튼을 누른 데이터를 편집하고 양식을 편집 모드로 보내면 데이터를 편집하고 저장 버튼을 클릭하여 데이터를 저장하고 formview를 다시보기 모드로 전환합니다.

사용자가 브라우저의 뒤로 버튼을 사용하여 masterlist.aspx 페이지로 돌아갈 경우 페이지가 업데이트되지 않고 브라우저 캐시에서 빠져 나오는 문제가 있습니다.

나는 HTTP 헤더 캐시 설정으로 놀았지만 모든 주요 브라우저에서 작동하는 것은 없습니다. 일부 브라우저에서는 웹 페이지 만료 경고가 표시됩니다. 또 다른 옵션은 클라이언트 쪽 코드를 사용하여 페이지를로드 할 때 페이지 새로 고침 (또는 부분 페이지 새로 고침)을 어떻게 든 트리거하는 것이지만이를 수행하는 방법을 파악하지 못했습니다.

위의 두 가지 방법으로 성공한 사람이 있거나 다른 사람이이 문제를 완전히 피할 수있는 방법이 있습니까?

+0

ASP.net은 전체 페이지가 포함 된 POST 양식을 사용하기 때문입니다. 이 문제를 해결하는 방법을 모르지만 도움이 될 것입니다. –

답변

31

제품 페이지를 방문하면 업데이트 정보를 얻기 위해 제 3 자에게 전화를 걸기 때문에 찾아보기 페이지를 DB에서로드해야하는 카탈로그에서이 작업을 수행해야합니다. 업데이트해야하는 경우. 이것은 데이터가 다시로드되었다고 말하는 것처럼 뒤로 버튼을 눌렀을 때 그렇습니다. 내가 한 것은이 페이지에 추가되었으며 모든 브라우저에서 제대로 작동하는 것 같습니다.

public class ProductBrowser : Page 
{ 
    protected override void OnInit(EventArgs e) 
    { 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     Response.Cache.SetNoStore(); 
     Response.Cache.SetExpires(DateTime.MinValue); 

     base.OnInit(e); 
    } 
} 
+0

은 크롬에서 제 동료를 위해 일했습니다. 6. – Merritt

+0

감사합니다. 우리는 여러 번 시도해 봤습니다. Firefox 및 IE9에서도 작동합니다. – penderi

0

뒤로 버튼 키 누르기 이벤트를 캡처하는 경우 browser.history.back()을 수행하는 대신 document.location (...) 호출을 수행 할 수 있습니다.

또는 다시 이벤트를 캡처하고 Response.Redirect ("yourpage")를 수행 할 수있는 포스트 백을 트리거 할 수 있습니다. 이렇게하면 브라우저가 지정된 페이지에 대해 GET 문을 실행하여 새로 고치게됩니다.

0

자바에서는 완전한 해결책이 불가능할 수도 있지만 해결 방법이 있습니다.

http://www.boutell.com/newfaq/creating/backbutton.html

그것은 반복적으로 '앞으로'작업을 수행 할 브라우저를 강제로 타임 아웃 기능을 사용합니다. 누군가가 뒤로 버튼을 클릭하더라도 실제 페이지로 돌아가서 뒤로 작업을 무효화합니다. 그것은 깜박임을 일으킬 수 있습니다.

+0

페이지에 양식 (예 : 로그인 양식)이있는 경우이 방법을주의하십시오. 사용자가 필드에 입력하는 동안 페이지를 새로 고칠 가능성이 있습니다. –

0

저는 HTTP 헤더 캐시 설정으로 놀았지만 모든 주요 브라우저에서 작동하는 것은 없습니다. 일부 브라우저에서는 웹 페이지 만료 경고가 표시됩니다.

어떻게 그 마스터리스트 페이지에 도착합니까? HTTP GET 을 발급하면 클라이언트와 프록시에서 캐시하지 못하게되므로 다시 탐색해도 문제가 없습니다.

이렇게하면 서버 쪽 캐싱 (해당 항목이 변경 될 때 적절한 무효화) 또는 전혀 캐싱하지 않을 수 있습니다.