asp.net에서 페이지를 새로 고치는 방법은 무엇입니까? (코드로 자체로로드하자)

StackOverflow https://stackoverflow.com/questions/1206507

  •  05-07-2019
  •  | 
  •  

문제

asp.net에서 페이지를 새로 고치는 방법은 무엇입니까? (코드로 자체로로드하자)

SharePoint 내부의 웹 파트 내부의 사용자 컨트롤 내부에 있기 때문에 페이지가 켜져 있을지 모르기 때문에 Response.Redirect ()를 사용하지 않기를 바랍니다.

도움이 되었습니까?

해결책

페이지가 클라이언트에 렌더링되면 새로 고침을 강요하는 두 가지 방법 만 있습니다. 하나는 JavaScript입니다

setTimeout("location.reload(true);", timeout);

두 번째는 메타 태그입니다.

<meta http-equiv="refresh" content="600">

서버 측에서 새로 고침 간격을 설정할 수 있습니다.

다른 팁

내 사용자 컨트롤에서 데이터를 업데이트 한 후 다음을 수행합니다.

  Response.Redirect(Request.RawUrl);    

이는 페이지가 다시로드되도록하고 사용자 컨트롤에서 제대로 작동합니다. 당신은 rawurl을 사용합니다 Request.Url.AbsoluteUri 요청에 포함될 수있는 GET 매개 변수를 보존합니다.

당신은 아마 사용하고 싶지 않을 것입니다 : __doPostBack, 많은 ASPX 페이지가 포스트 백을 할 때 다르게 행동하기 때문에.

이것은 늦었을 수도 있지만 답을 찾는 사람이 도움이되기를 바랍니다.

다음 줄을 사용하여 다음을 수행 할 수 있습니다.

Server.TransferRequest(Request.Url.AbsolutePath, false);

사용하지 마십시오 Response.Redirect 프로세스의 단계가 증가함에 따라. 실제로하는 일은 다음과 같습니다.

  1. 리디렉션 헤더로 페이지를 다시 보냅니다
  2. 브라우저는 대상 URL로 리디렉션됩니다.

보시다시피, 동일한 결과는 1 번의 여행이 아닌 2 번의 여행이 필요합니다.

이 시도:

Response.Redirect(Request.Url.AbsoluteUri);

JavaScript를 사용하십시오 location.reload () 방법.

<script type="text/javascript">
  function reloadPage()
  {
    window.location.reload()
  }
</script>

ASP.NET에서 페이지를 새로 고치는 다양한 방법이 있습니다 ...

자바 스크립트

 function reloadPage()
 {
     window.location.reload()
 }

뒤에 코드

Response.Redirect(Request.RawUrl)

메타 태그

<meta http-equiv="refresh" content="600"></meta>

페이지 리디렉션

Response.Redirect("~/default.aspx"); // Or whatever your page url

전체 페이지 새로 고침을하고 싶지 않다면 UpdatePanel 내부에서 새로 고치고 싶은 것을 포장 한 다음 비동기식 포스트 백을 수행하는 것은 어떻습니까?

개인적으로 페이지가 상태를 유지하도록해야하므로 모든 텍스트 상자 및 기타 입력 필드가 값을 유지합니다. Meta Refresh를 수행하면 새로운 게시물과 같습니다. Ispostback은 항상 거짓이므로 모든 컨트롤이 초기 상태에 있습니다. 상태를 유지하려면 이것을 page_load ()의 끝에 넣습니다. 이벤트가 연결된 이벤트와 같은 이벤트와 같은 이벤트 Butrefresh_click (...)과 같은 페이지에 숨겨진 버튼을 만듭니다. 이 코드는 페이지의 타이머를 설정하여 사용자가 새로 고침 버튼을 클릭 한 것처럼 포스트 백을 발사합니다. 모든 주와 세션은 유지됩니다. 즐기다! (PS Postback에서 오류를 받으면 @Page 헤더 enableEventValidation = "False"에 지시문을 넣어야 할 수도 있습니다.

//tell the browser to post back again in 5 seconds while keeping state of all controls
ClientScript.RegisterClientScriptBlock(this.GetType(), "refresh", "<script>setTimeout(function(){ " + ClientScript.GetPostBackClientHyperlink(butRefresh, "refresh") + " },5000);</script>");

당신은 그렇게 할 수 없습니다. 리디렉션 (또는 다른 서버 기술)을 사용하는 경우 실제 페이지를 브라우저로 보내지 않으며 리디렉션 페이지 만 보내지 않습니다.

이 작업을 수행하려면 메타 태그 또는 JavaScript를 사용해야하므로 한동안 표시된 후 페이지를 다시로드 할 수 있습니다.

ScriptManager.RegisterStartupScript(this, GetType(), "refresh", "window.setTimeout('window.location.reload(true);',5000);", true);

당신의 page_load, 이거 추가 해봐:

Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "no-cache");
Response.Expires = -1;
Response.Write("<script>window.opener.location.href = window.opener.location.href </script>");

이 문제를 해결하기 위해 두 가지 방법을 사용할 수 있습니다. 1) 헤드 태그 후

<head> 
<meta http-equiv="refresh" content="600">
</head>

2) 페이지가 헤드 태그가없는 경우 JavaScript를 사용하여 구현해야합니다.

<script type="text/javascript">
  function RefreshPage()
  {
    window.location.reload()
  }
</script>

내 연락처 :

http://gola.vn

페이지 새로 고침을 수행 할 수있는 유일한 올바른 방법은 JavaScript를 통한 것입니다. 상위 .NET 답변 중 많은 부분이 실패했습니다.

Response.Write("<script type='text/javascript'> setTimeout('location.reload(true); ', timeout);</script>");

위의 코드를 버튼 클릭 이벤트 또는 페이지 새로 고침을 강제로 만들려고하는 모든 곳에 넣습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top