2009-01-10 4 views
2

자바를 통해 경고를 표시하는 작은 클래스가 있습니다. 사용자가 유효한 우편 번호를 입력했는지 확인하는 페이지에서이 클래스를 사용하고 있습니다. 유효한 우편 번호를 입력하지 않으면 경고가 표시되고 해당 페이지는 동일한 페이지로 다시 게시되므로 변경할 수 있습니다. 유효한 우편 번호를 입력하면 다른 페이지로 리디렉션됩니다. 문제는 브라우저에서 뒤로 버튼을 누르면 우편 번호가 유효한지 여부와 관계없이 경고가 표시된다는 것입니다. 여기 BrowserBack에서 호출 된 등록 된 경고 스크립트

는 흐름입니다 : -> 우편 번호를 입력 -

우편 번호 입력 페이지> 우편

확인하는 경우 유효한 우편 -> 고토 overview.aspx 경우 유효하지 않은 우편, 고토 우편 시작 페이지

overview.aspx에서 브라우저의 뒤로 버튼을 누르면 경고가 표시됩니다. 나는 이것을 원하지 않는다. 아래는 훌륭한 경고 클래스에 대한 코드입니다. 아래에는 LinkButton을 클릭 할 때 경고를 확인하고 표시하는 코드가 있습니다.

protected void GotoReview(object sender, EventArgs e) { 
     if (ValidateZipCode(ZipCode)) { 
      Response.Redirect(string.Format("~/checkout/overview.aspx?pc={0}&zc={1}", 
      ProductCode, ZipCode)); 
     } 
     else { 
      Alert.Show("The entered zip code is invalid. Please ensure the zip code is a valid zip code."); 
     } 
    } 

private bool ValidateZipCode(string zip) { 
     if (zip.Length < 5 || zip.Length > 5) { 
      return false; 
     } 
     if (!Regex.IsMatch(zip, @"^(\d{5}-\d{4})|(\d{5})$")) { 
      return false; 
     } 
     return true; 
    } 

public static class Alert { 
public static void Show(string message) { 
    string cleanMessage = message.Replace("'", "\\'"); 
    string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>"; 
    Page page = HttpContext.Current.CurrentHandler as Page; 
    if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert")) { 
     page.ClientScript.RegisterClientScriptBlock(typeof(Alert), "alert", script); 
    } 
} 

}

답변

0

돌아 가기 버튼은 모든 브라우저에서 다르게 작동 언급 shahkalpesh로, 클라이언트에서 이러한 검사를 수행하는 것이 좋습니다, 일부 브라우저는 최신 버전을 검색합니다, 다른 사람은 간단하게 반환 무슨 디스크에 대한 최신 사본입니다.

여기서 가장 좋은 방법은 이전 자바 스크립트를 제거하고 양식에 OnSubmit을 추가하여 적절한 유효성 검사를 확인하는 것입니다. jquery는이 인스턴스에서 훌륭한 도구입니다.

이 방법을 사용하면 브라우저 백 전략에 상관없이 제출 단추를 클릭하지 않으면 경고가 호출되지 않습니다.

0

나는 우편 번호의 값이 리디렉션 때 손실 (하지만 그대로 추가 된 스크립트가 남아있다)됩니다 생각합니다.

왜 유효화를 자바 스크립트 (우편 번호 입력란이있는 페이지)에 넣지 않으십니까?
유효성 검사가 서버 측에서 수행해야합니다 (길이 검사 및 정규 검사를 수행 할 때)

0

우편 번호가 올바르게 저장되었는지 확인할 수 있습니다 (세션 [ "zc"]). zip.aspx에서 overview.aspx로 전송됩니다. 단순화하기 위해 사용자가 overview.aspx에있을 때 브라우저에서 뒤로 버튼을 클릭하면 경고 스크립트가 실행됩니다. 디버거에 중단 점을 넣으려고했으나 결코 호출되지 않습니다. 그래서 내가 가지고있는 유일한 가정은 뒤로 버튼을 사용할 때 등록 된 스크립트가 호출된다는 것입니다. 지퍼가 앞으로가는 유효한 경우에도 불구하고 다시가는 동안 스크립트가 실행 이유

는 이해가 안 돼요. : \

0

LinkButton 브라우저를 클릭하면 동일한 페이지 (우편 번호 입력 페이지)를 요청한 다음 overview.aspx로 리디렉션됩니다 (모든 것이 괜찮은 경우). 하지만 뒤로 버튼을 클릭하면 브라우저가 이전 요청을 수행하는 것처럼 보입니다 - 우편 번호 유효성 검사, 우편 번호 입력 페이지 표시가 아닙니다. 어떤 경우

, 그것은

관련 문제