2011-11-21 42 views
13

有沒有辦法在代碼中強制回發?強制回發

我正在尋求強制從asp.net web應用程序後面的c#代碼中的方法提出回發。

+1

你可以更具體 - 告訴我們你到目前爲止嘗試過什麼方法嗎? –

+1

呃,回傳是從客戶端(瀏覽器)到服務器。所以C#代碼(在服務器上運行)不能這樣做。 –

+0

我認爲你的問題是類似的提出的[這裏](http://stackoverflow.com/questions/1418532/how-to-force-a-postback-with-asp-net-and-c-sharp) – seanzi

回答

9

回發是一個表單提交後引發的,因此它涉及到客戶端操作... 看看這裏的解釋: ASP.NET - Is it possible to trigger a postback from server code?

,並在這裏爲一個解決方案: http://forums.asp.net/t/928411.aspx/1

+0

這工作!謝謝! –

+2

對於那些使用更新版本的.NET,你必須使用'Page.ClientScript.GetPostBackEventReference',因爲'this.GetPostBackEventReference(...)'已經過時。也可能是'Page.ClientScript.RegisterStartupScript(...)'。 – AzNjoE

1

不,不是來自後面的代碼。回發是使用Http POST方法從客戶端上的頁面發回服務器本身的請求。在服務器端,您可以請求重定向,但會是Http GET請求。

0

您可以手動調用從Page_Load事件通過回發調用的方法:

public void Page_Load(object sender, EventArgs e) 
{ 
    MyPostBackMethod(sender, e); 
} 

但如果你的意思是,如果你能有Page.IsPostBack屬性設置爲true沒有真正的回傳,那麼答案是否定的。

0

您可以使用數據綁定控件,如RepeaterListView,根據需要將其重新綁定到控件屬性列表,並讓它動態生成控件。

作爲替代方案,您可以使用Response.Redirect(".")重新加載相同的頁面。

6

您可以嘗試重定向到同一頁面。

Response.Redirect(Request.RawUrl); 
+0

但是,然後表單值丟失... –

+0

@Protectorone不除非你ViewState []他們第一次,並重載在Page_Load() – Fandango68

4

簡單:

ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "DoPostBack", "__doPostBack(sender, e)", true); 
0

通過使用Server.Transfer的( 「YourCurrentPage.aspx」);我們可以輕鬆實現這一點,它比Response.Redirect()更好。因爲Server.Transfer()將爲您節省往返。

+0

後續回發這不重置表單字段?我想這就像是一個新的頁面調用,這意味着像過濾器這樣的用戶輸入將被撤銷(如果它們沒有存儲在會話中)。 – Undercover1989

1

這裏的解決方案來自http://forums.asp.net/t/928411.aspx/1正如mamoo提到的 - 以防萬一網站下線。爲我工作得很好。

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());