我使用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中的文本,如果文本是正确的,那么字符串'脚本'已正确设置并在scriptmanager中注册。通过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事件上设置了一个断点,现在它被点击了。所有逻辑都正确运行,但我仍然遇到相同的问题(空白页等,网址没有更改为MyPage.aspx等)。
答案 0 :(得分:1)
我找到了答案,尽管它并没有特别与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'应该“链接”#39;和Link5.Attributes.Add("类型"," text / javascript")应该是' text / css'。