我正在使用GreyBox js庫來顯示一個彈出窗口。爲了給出更一般的上下文,我已經將VB.NET中的解決方案改寫爲C#。代碼在兩者中基本相同,只是在兩者中使用不同的語法。然而,在VB.NET下述溶液中的作品,但不是C#版本:Greybox GB_showcenter不顯示彈出框
VB
script = String.Format("GB_showCenter('My Caption', '../MyPage.aspx?number={0}&state={1}&ID={2}',300,600);", num, MyLabel.Text, Label_id.Text)
ScriptManager.RegisterClientScriptBlock(Me.Page, Me.Page.GetType(), Guid.NewGuid().ToString(), script, True)
這工作,並在單擊按鈕時,將用戶導航到具有新的一頁大小受限制。但是,以下不起作用。
C#
script = String.Format("GB_showCenter('MyCaption', '../MyPage.aspx?number={0}&state={1}&ID={2}',300,600);", num, MyLabel.Text, Label_id.Text);
ScriptManager.RegisterClientScriptBlock(this.Page, this.Page.GetType(), Guid.NewGuid().ToString(), script, true);
應該發生的是,當我點擊一個鏈接按鈕,在MyLabel文本進行評估,如果文本是正確的,則字符串「腳本」的設置適當並且註冊與腳本管理員。通過VS2010調試器進行操作,這一切都按預期進行。但是,用戶不會導航到名爲「MyPage.aspx」的新頁面。網址保持不變,頁面變爲空白。
更有趣的是,如果我點擊滾動條,當前頁面會與上面顯示的新彈出窗口一起短暫顯示在同一頁面上。所以我目前的理論是,這是關於如何從C#調用JavaScript的。有任何想法嗎?
UPDATE
我經歷了與VS2010調試器,並決定是否MyPage.aspx被擊中的。事實並非如我所料。然而,我後來認爲它可能不是它的Page_Load事件。所以我加入:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
Load += Page_Load;
}
我在MyPage.aspx的Page_Load事件中設置了一個斷點,現在正在打中。所有的邏輯運行正確,但我仍然得到同樣的問題(空白頁等,網址不會改變MyPage.aspx等)。
也許您需要設置ScriptManager,如下所示:[http://msdn.microsoft.com/en-us/library/bahh2fef%28v=vs.110%29.aspx](http: //msdn.microsoft.com/en-us/library/bahh2fef%28v=vs.110%29.aspx) – 2014-11-12 18:01:36