ASP.NET 2.0中加入的Cross-Page Postback機制讓我們ASP.NET開發人員有了輕松的(無需自定義)跨頁面發POST請求的方式。但在實際開發時,難免遇到點小問題。比如在點擊按鈕發生跨頁提交的時候,想先彈出一個JavaScript的confirm對話框進行確認,用戶如果OK,發生postback,如果Cancel掉,就停留在原頁面不做任何操作,類似於我們在刪除按鈕上添加的客戶端功能。此時,便事不由人了……
我們准備兩個頁面。在Default.aspx中,加入文本框、按鈕,設置按鈕跨頁回送到Target.aspx:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Cross Page Post Back" PostBackUrl="~/Target.aspx" OnClientClick="return confirm('Are u sure?')" />
在Target.aspx.cs中,Find到Default.aspx裡的TextBox,把值顯示在Label上:
protected void Page_Load(object sender, EventArgs e)
{
if (PreviousPage != null)
Label1.Text = (PreviousPage.FindControl("TextBox1") as TextBox).Text;
}
運行,然後發現當我們點擊Cancel的時候,確實可以Cancel掉,但是點OK,卻無論如何都無法將請求發出去了。