ASP.NETでページを更新するにはどうすればよいですか? (コードによってそれ自体をリロードさせます)

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

  •  05-07-2019
  •  | 
  •  

質問

ASP.NETでページを更新するにはどうすればよいですか? (コードによって自動的にリロードさせます)

Response.Redirect()を使用したくないのは、共有ポイント内のWebパーツ内のユーザーコントロール内にあるため、ページが表示されるかどうかわからないためです。

役に立ちましたか?

解決

クライアントにページがレンダリングされると、更新を強制する方法は2つしかありません。 1つはJavascriptです

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

2番目はメタタグです:

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

サーバー側で更新間隔を設定できます。

他のヒント

ユーザーコントロールで、データを更新した後:

  Response.Redirect(Request.RawUrl);    

これにより、ページがリロードされ、ユーザーコントロールから正常に機能します。 Request.Url.AbsoluteUri ではなくRawURLを使用して、リクエストに含まれる可能性のあるGETパラメーターを保持します。

ポストバックを行う際に多くのaspxページの動作が異なるため、おそらく __ doPostBack は使用したくないでしょう。

これは遅れる可能性がありますが、答えを探している人に役立つと思います。

次の行を使用して、これを実行できます。

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のページを更新する方法はさまざまです...

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>

私の連絡先:

http://gola.vn

ページの更新を行う唯一の正しい方法はJavaScriptを使用することでした。多くの.NETの回答の多くは失敗しました。

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

上記のコードをボタンクリックイベントまたはページを強制的に更新する任意の場所に挿入します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top