2009-09-04 2 views
4

의 초기 값을 복원하지 마십시오 :Asp.Net - 페이지 새로 고침 (F5)이이 간단한 코드입니다 텍스트 상자

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     txt.Text = "Original"; 
    } 
} 
  1. 첫 번째로드를. 텍스트 상자 상태는 "원본"입니다.

  2. 수동으로 값을 "Not Original"으로 변경하십시오.

  3. F5를 누름. 줄 :

    txt.Text = "원본";

이 실행되지만 입력 값은 은 내가 adressbar에를 입력으로 쳤을 때,

"원본 없음"남아 있지만 . 값이 "원본"으로 변경됩니다.

더 starnge는 ADRESS 마지막에 '#'을 포함하는 경우 (JQuery와 클릭을 사용하여 ..)입니다

다음, 심지어는 adressbar에 명중 할 때, 값

답변

12
"원본 없음"남아

ASP.NET 페이지를 새로 고치면 (F5) 은 마지막으로 취한 동작 인을 반복합니다. 그래서 당신의 경우, 당신이 한 마지막 일은 텍스트 박스 값을 바꾸는 것이었을 때, 새로 고침은 텍스트 박스를 다시 그 값으로 설정합니다.

주소 표시 줄에 "Enter"키를 누르면 브라우저가 모든 것을 버리고 완전히 새로운 페이지로 이동합니다.

"포스트 백"은 페이지 을 (를) (으)로 제출 (게시)한다는 것을 의미합니다. 처음 페이지를로드 할 때 IsPostBack은 페이지를 요청하기 만하므로 아무 것도 제출하지 않으므로 false입니다. 그러나 ASP.NET 페이지에서 수행 한 모든 작업 (일단 사용자가있는 경우)은 숨겨진 양식을 동일한 페이지에 제출합니다. IsPostBack은 후속 요청에 대해 true입니다.

마지막으로 주소 표시 줄에 "#"이 있으면 해당 URL에 enter 키를 눌러도 페이지가 다시로드되지 않습니다. #은 앵커를 의미하기 때문입니다. 이미 "페이지 x"에서 "페이지 x # 무언가"로 이동하려고하면 페이지가 다시로드되지 않습니다. 브라우저에서 그대로 유지되며 앵커 지점으로 점프하지만 다시로드되지는 않습니다.

+0

하드 리프레시 (CRTL + F5)는 어떤가요? 새로운 요청처럼 작동해서는 안됩니까? – Eddie

+1

@Eddie CTRL-F5는 여전히 마지막 동작을 반복하지만 브라우저에 캐시 된 자산을 업데이트하도록 지시합니다. –

1

어떤 브라우저를 사용하십니까? 일부 브라우저 및 플러그인은 상황에 따라 양식 설정을 유지하려고합니다.

2

어제 실제로 IE (7)와 Firefox (3.5)의 차이점을 발견했습니다! html로 일부 입력 필드가있는 양식을 만들었고 IE를 사용하여 새로 고침하면 모든 feild가 빈 상태 (기본 상태)로 설정되지만 FireFox에서는 새로 고침 (페이지 변경을 포함하여 코드 변경)이 유지되지만 내가 들판에서 쓴 가치들! 개발/테스트 할 때 매우 유용하므로 매번 테스트 데이터를 다시 작성할 필요가 없습니다!

그냥 호기심에 대한, 지금 막 ASP.NET에서 간단한 테스트를 작성하고 Firefox와 동일한 작업을 수행했습니다. 새로 고침 단추를 누르면 변경된 값이 유지되지만 주소 표시 줄에 Enter 키를 누르면 원본 텍스트가 다시로드됩니다. Page_Load으로 설정하십시오. 그러나 IE에서는 두 경우 모두 원래 값으로 재설정됩니다!

다른 경우의 기본 (브라우저에 종속되지 않음) 차이점은 Rex M의 답변이 매우 우수합니다.

+0

예, 파이어 폭스에서도 이걸 보았습니다. 나는 FF가 사용자가 입력 한 것을 잃어 버리는 것을 피한다고 가정한다. ari의 질문은 Rex M이 다른 시나리오를 묘사하고 있다고 생각하기 때문에 양식을 게시하는 것에 대해서는 언급하지 않았다. –

-1

ASP.NET 페이지를 새로 고치면 (F5) 마지막으로 수행 한 작업이 반복됩니다. 그래서 당신의 경우, 당신이 한 마지막 일은 텍스트 박스 값을 바꾸는 것이었을 때, 새로 고침은 텍스트 박스를 다시 그 값으로 설정합니다.

아니요, 입력란의 값을 변경 한 후 양식 제출을 해지하지 않는 한 가능하지 않습니다.

+0

@chris - 올바르지 않습니다. 당신은 당신이 무슨 말을하고 있는지 모릅니다. – Jagd