コードでポストバックを強制する方法はありますか?
私は、asp.net Webアプリケーションの背後にあるc#コードのメソッドからポストバックを強制的に発生させたいと考えています。
フォームの送信後にポストバックがトリガーされるため、クライアントアクションに関連しています...説明については、こちらをご覧ください: ASP.NET-サーバーコードからポストバックをトリガーすることは可能ですか?
そして、ここで解決策のために: http://forums.asp.net/t/928411.aspx/1
より簡単:
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "DoPostBack", "__doPostBack(sender, e)", true);
ここでは http://forums.asp.net/t/928411.aspx/1 からの解決策がmamooによって言及されているように-Webサイトがオフラインになった場合に備えて。私にとってはうまくいきました。
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());
Repeater
やListView
などのデータバインドコントロールを使用し、必要に応じてコントロールプロパティのリストに再バインドし、コントロールを動的に生成できます。
別の方法として、Response.Redirect(".")
を使用して同じページを再ロードできます。
いいえ、コードビハインドからではありません。ポストバックは、Http POSTメソッドを使用して、サーバー上のクライアントへのクライアントページから開始されたリクエストです。サーバー側ではリダイレクトをリクエストできますが、これはHttp GETリクエストになります。
Server.Transfer( "Your Current Page.aspx");を使用してこれは簡単に実現でき、Response.Redirect()よりも優れています。 coz Server.Transfer()はラウンドトリップを節約します。
Page_Load
イベントからPostBackによって呼び出されたメソッドを手動で呼び出すことができます。
public void Page_Load(object sender, EventArgs e)
{
MyPostBackMethod(sender, e);
}
しかし、実際のポストバックなしでPage.IsPostBack
プロパティをtrue
に設定できる場合、答えはノーです。