他のヒント
ユーザーコントロールで、データを更新した後:
Response.Redirect(Request.RawUrl);
これにより、ページがリロードされ、ユーザーコントロールから正常に機能します。 Request.Url.AbsoluteUri
ではなくRawURLを使用して、リクエストに含まれる可能性のあるGETパラメーターを保持します。
ポストバックを行う際に多くのaspxページの動作が異なるため、おそらく __ doPostBack
は使用したくないでしょう。
これは遅れる可能性がありますが、答えを探している人に役立つと思います。
次の行を使用して、これを実行できます。
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のページを更新する方法はさまざまです...
Javaスクリプト
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内でラップしてから非同期ポストバックを行う方法はどうですか?
個人的にページの状態を維持する必要があるため、すべてのテキストボックスおよびその他の入力フィールドは値を保持します。メタリフレッシュを実行すると、新しい投稿のようになり、IsPostBackは常にfalseになるため、すべてのコントロールが再び初期化された状態になります。状態を保持するには、これをPage_Load()の最後に配置します。イベントが接続されたページに非表示ボタンを作成します。これは、butRefreshとイベントbutRefresh_Click(...)のようなものです。このコードは、ユーザーが自分で更新ボタンをクリックしたように、ページにタイマーを設定してポストバックを起動します。すべての状態とセッションが保持されます。楽しい! (追記:ポストバックでエラーが発生した場合は、@ PageヘッダーEnableEventValidation =&quot; false&quot;にディレクティブを配置する必要がある場合があります。
//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>");
この問題を解決するには、2つの方法を使用できます。 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>");
上記のコードをボタンクリックイベントまたはページを強制的に更新する任意の場所に挿入します。