C'è un modo per forzare un postback nel codice?Forzare un postback
Sto cercando di forzare la generazione di un postback da un metodo nel codice C# dietro la mia applicazione web asp.net.
C'è un modo per forzare un postback nel codice?Forzare un postback
Sto cercando di forzare la generazione di un postback da un metodo nel codice C# dietro la mia applicazione web asp.net.
un postback viene attivato dopo un invio di un modulo, quindi è legato ad un'azione di cliente ... un'occhiata qui per una spiegazione: ASP.NET - Is it possible to trigger a postback from server code?
e qui per una soluzione: http://forums.asp.net/t/928411.aspx/1
Questo ha funzionato! Grazie! –
Per coloro che utilizzano le versioni più recenti di .NET, è necessario utilizzare 'Page.ClientScript.GetPostBackEventReference' poiché 'this.GetPostBackEventReference (...)' è obsoleto. Probabilmente anche 'Page.ClientScript.RegisterStartupScript (...)'. – AzNjoE
No, non dal codice dietro. Un postback è una richiesta avviata da una pagina sul client su se stessa sul server utilizzando il metodo Http POST. Sul lato server è possibile richiedere un reindirizzamento, ma la richiesta sarà Http GET.
È possibile chiamare manualmente il metodo invocato da PostBack dall'evento Page_Load
:
public void Page_Load(object sender, EventArgs e)
{
MyPostBackMethod(sender, e);
}
Ma se vuoi dire se si può avere il set Page.IsPostBack
proprietà true
senza una vera palo, quindi la risposta è no.
È possibile utilizzare un controllo con associazione a dati come Repeater
o ListView
, associarlo nuovamente a un elenco di proprietà di controllo in base alle esigenze e lasciare che generi i controlli dinamicamente.
In alternativa, è possibile utilizzare Response.Redirect(".")
per ricaricare la stessa pagina.
Puoi provare a reindirizzare alla stessa pagina.
Response.Redirect(Request.RawUrl);
Tuttavia, i valori del modulo vengono persi ... –
@Protectorone non a meno che non si visualizzi ViewState [] per primo e si ricarichi sul successivo postback in Page_Load() – Fandango68
Più semplice:
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "DoPostBack", "__doPostBack(sender, e)", true);
Utilizzando Server.Transfer ("YourCurrentPage.aspx"); possiamo facilmente ottenerlo ed è meglio di Response.Redirect(); coz Server.Transfer() ti farà risparmiare il viaggio.
Questo non ripristina i campi del modulo? Immagino sia come una nuova chiamata di pagina che significa che gli input dell'utente come i filtri verrebbero annullati (se non vengono memorizzati nella sessione). – Undercover1989
Qui la soluzione da http://forums.asp.net/t/928411.aspx/1 come menzionato da mamoo - nel caso in cui il sito Web non sia in linea. Ha funzionato bene per me.
StringBuilder sbScript = new StringBuilder();
sbScript.Append("<script language='JavaScript' type='text/javascript'>\n");
sbScript.Append("<!--\n");
sbScript.Append(this.GetPostBackEventReference(this, "PBArg") + ";\n");
sbScript.Append("// -->\n");
sbScript.Append("</script>\n");
this.RegisterStartupScript("AutoPostBackScript", sbScript.ToString());
Puoi essere più specifico e dirci quali approcci hai provato finora? –
eh, un postback è dal client (browser) al server. Quindi il codice C# (che gira sul server) non può farlo. –
Penso che la tua domanda sia simile a quella sollevata [qui] (http://stackoverflow.com/questions/1418532/how-to-force-a-postback-with-asp-net-and-c-sharp) – seanzi