2014-10-09 67 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'。