Greybox GB_showcenter未显示弹出窗口

本文关键字:窗口 显示 GB showcenter Greybox | 更新日期: 2023-09-27 18:26:00

我正在使用GreyBox js库来显示一个弹出窗口。为了提供一些更通用的上下文,我将VB.NET中的一个解决方案重写为C#。两者的代码本质上是相同的,只是两者使用的语法不同。但是,以下内容适用于VB.NET解决方案,但不适用于C#版本:

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中的文本将被评估,如果文本是正确的,则字符串"script"将被适当设置并在scriptmanager中注册。通过VS2010调试器运行,这一切都如预期的那样发生。但是,用户不会导航到名为"MyPage.aspx"的新页面。url保持不变,页面变为空白。

更有趣的是,如果我点击滚动条,当前页面会在同一页面上短暂显示,并在其上方显示新的弹出窗口。因此,我目前的理论是,这与如何从c#调用javascript有关。有什么想法吗?

更新

我检查了vs2010调试器,并决定看看MyPage.aspx是否被击中。事实并非如此,正如我所料。然而,我当时想,也许它并没有触发它的Page_Load事件。所以我添加了:

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    Load += Page_Load;
}

我在MyPage.aspx的Page_Load事件上设置了一个断点,现在它被击中了。所有的逻辑都被正确地执行了,但我仍然遇到了同样的问题(空白页面等,url没有更改为MyPage.aspx等)。

Greybox GB_showcenter未显示弹出窗口

我找到了答案,尽管它与GreyBox并没有特别的关系。我错误地将一些本应是链接的东西制作成了脚本,并添加了不正确的属性。类型是text/javascript,而本应是text/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);

"TagName"应该是"link",Link5.Attributes.Add("type","text/javascript")应该是"text/css"。