Come si aggiorna la pagina in ASP.NET? (Lascia che si ricarichi tramite il codice)

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

  •  05-07-2019
  •  | 
  •  

Domanda

Come si aggiorna una pagina in ASP.NET? (Lascia che si ricarichi tramite il codice)

Preferirei non utilizzare Response.Redirect () perché non so se la pagina in cui mi troverò, poiché è all'interno di un controllo utente all'interno di una webpart all'interno di sharepoint.

È stato utile?

Soluzione

Una volta che la pagina è renderizzata al client hai solo due modi per forzare un aggiornamento. Uno è Javascript

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

Il secondo è un meta tag:

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

È possibile impostare gli intervalli di aggiornamento sul lato server.

Altri suggerimenti

Nei miei controlli utente, dopo aver aggiornato i dati lo faccio:

  Response.Redirect(Request.RawUrl);    

Ciò garantisce che la pagina venga ricaricata e funzioni correttamente da un controllo utente. Si utilizza RawURL e non Request.Url.AbsoluteUri per preservare tutti i parametri GET che possono essere inclusi nella richiesta.

Probabilmente non vuoi usare: __doPostBack , poiché molte pagine aspx si comportano diversamente quando si fa un postback.

Potrebbe essere tardi, ma spero che aiuti qualcuno che sta cercando la risposta.

Puoi usare la seguente riga per farlo:

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

Cerca di evitare di usare Response.Redirect poiché aumenta i passaggi del processo. Quello che effettivamente fa è:

  1. Restituisce la pagina con l'intestazione di reindirizzamento
  2. Il browser reindirizza all'URL di destinazione.

Come puoi vedere, lo stesso risultato richiede 2 viaggi anziché 1 viaggio.

Prova questo:

Response.Redirect(Request.Url.AbsoluteUri);

Utilizza il metodo location.reload () di javascript.

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

Esistono vari metodi per aggiornare la pagina in asp.net come ...

Java Script

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

Codice dietro

Response.Redirect(Request.RawUrl)

Meta tag

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

Reindirizzamento della pagina

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

Se non si desidera eseguire un aggiornamento della pagina intera, che ne dite di racchiudere ciò che si desidera aggiornare all'interno di un UpdatePanel e quindi eseguire un postback asincrono?

Devo personalmente assicurare che la pagina mantenga lo stato, quindi tutte le caselle di testo e altri campi di input mantengono i loro valori. facendo meta refresh è come un nuovo post, IsPostBack è sempre falso, quindi tutti i tuoi controlli sono di nuovo nello stato inizializzato. Per conservare lo stato, inseriscilo alla fine di Page_Load (). crea un pulsante nascosto sulla pagina con un evento collegato, qualcosa come butRefresh con evento butRefresh_Click (...). Questo codice imposta un timer sulla pagina per attivare un postback proprio come un utente ha fatto clic sul pulsante di aggiornamento stesso. tutto lo stato e la sessione vengono mantenuti. Godere! (P.S. potrebbe essere necessario inserire la direttiva nell'intestazione @Page EnableEventValidation = " false " se ricevi un errore sul postback.

//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>");

Non puoi farlo. Se utilizzi un reindirizzamento (o qualsiasi altra tecnica del server) non invierai mai la pagina effettiva al browser, ma solo le pagine di reindirizzamento.

Devi usare un meta tag o JavaScript per farlo, in modo da poter ricaricare la pagina dopo che è stata visualizzata per un po ':

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

Nel tuo page_load , aggiungi questo:

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

È possibile utilizzare 2 modi per risolvere questo problema: 1) Dopo il tag head

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

2) Se la tua pagina non ha il tag head, devi usare Javascript per implementare

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

Il mio contatto:

http://gola.vn

L'unico modo corretto per eseguire l'aggiornamento della pagina era tramite JavaScript, molte delle principali risposte di .NET non sono riuscite per me.

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

Inserisci il codice sopra nell'evento clic pulsante o ovunque desideri forzare l'aggiornamento della pagina.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top