【发布时间】: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 等)。
【问题讨论】:
-
也许您需要像此链接中显示的那样设置 ScriptManager:http://msdn.microsoft.com/en-us/library/bahh2fef%28v=vs.110%29.aspx