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并没有特别的关系。我错误地将一些本应是链接的东西制作成了脚本,并添加了不正确的属性。类型是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"。