【问题标题】:Greybox GB_showcenter not displaying popupGreybox GB_showcenter 不显示弹出窗口
【发布时间】:2014-10-09 10:42:52
【问题描述】:

我正在使用 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 中的文本,如果文本是正确的,则字符串“脚本”会被正确设置并注册到脚本管理器。使用 VS2010 调试器运行,这一切都按预期发生。但是,用户不会导航到名为“MyPage.aspx”的新页面。网址保持不变,页面变为空白。

更有趣的是,如果我单击滚动条,当前页面将与同一页面上显示的新弹出窗口一起短暂显示。所以我目前的理论是它与如何从 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 等)。

【问题讨论】:

标签: c# greybox


【解决方案1】:

我找到了答案,尽管它与 GreyBox 并没有真正的关系。当它应该是一个链接并添加了不正确的属性时,我错误地制作了一个脚本。当它应该是 text/css 时,类型是 text/javascript。这似乎有所作为。为了提供更多上下文,我有以下内容:

 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'。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 2022-12-14
    • 2020-08-01
    • 1970-01-01
    相关资源
    最近更新 更多