ASP.NETでページを更新するにはどうすればよいですか?(コードで自分自身をリロードしましょう)
Sharepoint内のWebパーツ内のユーザーコントロール内にあるため、Response.Redirect()を使用したくありません。
ASP.NETでページを更新するにはどうすればよいですか?(コードで自分自身をリロードしましょう)
Sharepoint内のWebパーツ内のユーザーコントロール内にあるため、Response.Redirect()を使用したくありません。
回答:
ページがクライアントに表示されると、更新を強制する方法は2つしかありません。1つはJavascriptです
setTimeout("location.reload(true);", timeout);
2番目はメタタグです。
<meta http-equiv="refresh" content="600">
サーバー側で更新間隔を設定できます。
Server.TransferRequest。
ユーザーコントロールで、データを更新した後、次のことを行います。
Response.Redirect(Request.RawUrl);
これにより、ページが確実に再読み込みされ、ユーザーコントロールから正常に機能します。RawURLを使用Request.Url.AbsoluteUriし、リクエストに含まれる可能性のあるGETパラメータを保持しない。
__doPostBack多くのaspxページはポストバックを行うときに異なる動作をするため、おそらく使用したくありません。
これは遅いかもしれませんが、私はそれが答えを探している誰かを助けることを願っています。
これを行うには、次の行を使用できます。
Server.TransferRequest(Request.Url.AbsolutePath, false);
Response.Redirectプロセスのステップが増えるため、使用は避けてください。それが実際に行うことは:
ご覧のとおり、同じ結果は1回ではなく2回かかります。
.Text中TextBoxか.Visibleの状態をButton。
これを試して:
Response.Redirect(Request.Url.AbsoluteUri);
JavaScriptのlocation.reload()メソッドを使用します。
<script type="text/javascript">
function reloadPage()
{
window.location.reload()
}
</script>
個人的には、ページの状態を維持する必要があるため、すべてのテキストボックスと他の入力フィールドは値を保持します。メタ更新を行うと、新しい投稿のようになり、IsPostBackは常にfalseになるため、すべてのコントロールが再び初期化された状態になります。状態を保持するには、これをPage_Load()の最後に置きます。イベントが接続されたページに非表示のボタンを作成します(butRefresh with event butRefresh_Click(...)など)。このコードは、ユーザーが更新ボタンを自分でクリックしたのと同じように、ページにタイマーを設定してポストバックを起動します。すべての状態とセッションが保持されます。楽しい!(PSポストバックでエラーが発生した場合は、@ 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>");
この問題を解決するには、2つの方法を使用できます。1)ヘッドタグの後
<head>
<meta http-equiv="refresh" content="600">
</head>
2)ページにヘッドタグがない場合は、JavaScriptを使用して実装する必要があります
<script type="text/javascript">
function RefreshPage()
{
window.location.reload()
}
</script>
私の連絡先: