2014-10-09 68 views
2

我正在使用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等)。

+0

也許您需要設置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

回答

1

我找到了答案,但它並沒有真正與GreyBox相關。當它應該是一個鏈接並添加了不正確的屬性時,我會錯誤地創建一個腳本。該類型是文本/ JavaScript時,它應該是文本/ CSS。這似乎有所作爲。爲了讓更多的方面,我有以下幾點:

HtmlGenericControl Link5 = new HtmlGenericControl(); 
Link5.TagName = "script"; 
Link5.Attributes.Add("href", ResolveClientUrl("~/MyApp/Greybox/gb_styles.css")); 
Link5.Attributes.Add("rel", "stylesheet"); 
Link5.Attributes.Add("type", "text/javascript"); 
Page.Header.Controls.Add(Link5); 

的「標籤名」應該已經「鏈接」和Link5.Attributes.Add(「類型」,「文/ JavaScript的」)應該已經「文/ CSS'。