2013-05-29 249 views
0

我目前有一個ASP.Net按鈕點擊事件,在註冊新的啓動腳本之前做了一些事情(包括更改會話變量)因爲是,當用戶單擊按鈕時,即使它在技術上由用戶事件觸發,彈出窗口阻止程序也會阻止彈出窗口;我想,瀏覽器不會那樣看。與ASP.Net按鈕彈出窗口點擊,不彈出窗口阻止程序

protected void ContinueButton_Click(object sender, EventArgs e) 
{ 
    if (agreement.Checked) 
    { 
     string eid = Request.QueryString["eid"]; 
     Session["TestAgreement"] = "Agreed"; 
     openNewWindow("Exams/exam.aspx?id=" + courseCode, "height=760, width=1000, status=yes, toolbar=no, menubar=no, location=no, scrollbars=1"); 
    }   
} 
private void openNewWindow(string url, string parameters) 
{ 
    ClientScript.RegisterStartupScript(this.GetType(), "Exam", String.Format("<script>window.open('" + url + "', '', '" + parameters + "');</script>")); 
} 
+0

爲您的網站的廣告攔截器添加例外。 – AAlferez

+0

您也可以用鏈接替換按鈕並設置target =「_ blank」。這將打開一個新窗口並從新窗口發送請求,避免彈出窗口阻止程序。 –

+0

@ AnnArbor87 - 我不想強迫我的所有用戶添加異常 – jpsnow72

回答

2

AjaxControlToolkit的模式彈出很好地工作了這樣的事情。

http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/ModalPopup/ModalPopup.aspx

它仍然是asp.net框架內,所以你仍然可以得到你所有的服務器端的善良,你可以隨時彈出一個用戶控件在它的內部,這樣就可以把它當作一個單獨的「頁面」

只要記住保持你的cclientidode在你的對象上是靜態的或可預測的,如果你想能夠從你的客戶端擊中它們。

+0

忘了提及,它也可以從服務器產生它,使其比純粹的客戶端彈出像jquery – Crudler

+0

謝謝!這是我所需要的 – jpsnow72

+0

完整的包是非常好的。很多很酷的玩具。 btw DevExpress有一些不錯的asp.net popup東西,但它有點昂貴的壽。 – Crudler

0

用javascript來做。 不要打開新窗口,只需在前面設置div並更改其內容。

最簡單的是,使用jQuery對話框:

http://api.jqueryui.com/dialog/

+0

感謝您的建議。我已經考慮了對話框,但彈出窗口中包含大量的服務器端代碼,我希望與頁面的其餘部分分開。 – jpsnow72

相關問題