asp.net에서 페이지를 새로 고치는 방법은 무엇입니까? (코드로 자체로로드하자)
-
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
프로세스의 단계가 증가함에 따라. 실제로하는 일은 다음과 같습니다.
- 리디렉션 헤더로 페이지를 다시 보냅니다
- 브라우저는 대상 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>
내 연락처 :
페이지 새로 고침을 수행 할 수있는 유일한 올바른 방법은 JavaScript를 통한 것입니다. 상위 .NET 답변 중 많은 부분이 실패했습니다.
Response.Write("<script type='text/javascript'> setTimeout('location.reload(true); ', timeout);</script>");
위의 코드를 버튼 클릭 이벤트 또는 페이지 새로 고침을 강제로 만들려고하는 모든 곳에 넣습니다.