2011-12-30 2 views
1

캐시를 방지하기 위해 마스터 페이지 page_load 이벤트에이 코드를 추가했습니다. (임의의 소스에서 그것을 가지고.)페이지 정보 자동 재송신

HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1)) 
    HttpContext.Current.Response.Cache.SetValidUntilExpires(False) 
    HttpContext.Current.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches) 
    HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache) 
    HttpContext.Current.Response.Cache.SetNoStore() 

을 masterpage, 말에서 정보를 처리 한 후, 두 숫자를 추가하고 내가 masterpage에서 멀리 이동하여 브라우저의 뒤로 버튼을 사용하여 다시 가고 싶은 때, 합계를 표시 '재전송'및 '취소'버튼이있는 재전송 대화 상자가 나타납니다. 다시 보내기를 클릭하면 이전 정보 (합계)와 함께 마스터 페이지가로드되고 취소는 아무 것도하지 않습니다. 내가하려는 것은 대화 상자를 숨기거나 비활성화하고 '다시 보내기'를 선택하여 사용자가 브라우저의 뒤로 버튼을 클릭 할 때 대화 상자가 나타나지 않고 이전 마스터 페이지로 자동으로 리디렉션됩니다. 비슷한 효과가있는 방법이 있습니까? 아니면 심지어 가능합니다. 여기에 초보자 답장 해주십시오.

답변

0

버튼을 클릭하면 POST 페이지가 서버에 다시 오기 때문에 브라우저에이 메시지가 표시됩니다. 입력 값 (합계 할 두 숫자)을 보내면 서버는 결과로 응답합니다. '뒤로'를 클릭하면 브라우저에서 경고 메시지를 표시하므로 종종 데이터를 다시 입력하는 것이 좋지 않기 때문에 경고 메시지가 나타납니다. 예를 들어, 온라인 구매하기.

Response.Redirect(...)Button_Click 처리기에 넣으면이 문제를 해결할 수 있습니다.이 경우 새로운 GET 요청이 전송됩니다. C# 코드를 표시 할 수 있습니다. VB.NET을 모르겠다. 미안 :

public void Page_Load(object sender, EventArgs e) { 
    if (IsPostBack) return; 
    int num1, num2; 
    if (Int32.TryParse(Session["num1"], out num1) && Int32.TryParse(Session["num2"], out num2)) { 
    txtNum1.Text = num1.ToString(); 
    txtNum2.Text = num2.ToString(); 
    lblSum.Text = (num1 + num2).ToString(); 
    } 
} 

internal void Button1_Click(object sender, EventArgs e) { 
    Session["num1"] = txtNum1.Text; 
    Session["num2"] = txtNum2.Text; 
    Response.Redirect(Request.Url.PathAndQuery); 
}