我正在使用GreyBox js库来显示一个弹出窗口。为了给出更一般的上下文,我已经将VB.NET中的解决方案改写为C#。代码在两者中基本相同,只是在两者中使用不同的语法。然而,在VB.NET下述溶液中的作品,但不是C#版本:Greybox GB_showcenter不显示弹出框
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的。有任何想法吗?
UPDATE
我经历了与VS2010调试器,并决定是否MyPage.aspx被击中的。事实并非如我所料。然而,我后来认为它可能不是它的Page_Load事件。所以我加入:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
Load += Page_Load;
}
我在MyPage.aspx的Page_Load事件中设置了一个断点,现在正在打中。所有的逻辑运行正确,但我仍然得到同样的问题(空白页等,网址不会改变MyPage.aspx等)。
也许您需要设置ScriptManager,如下所示:[http://msdn.microsoft.com/en-us/library/bahh2fef%28v=vs.110%29.aspx](http: //msdn.microsoft.com/en-us/library/bahh2fef%28v=vs.110%29.aspx) – 2014-11-12 18:01:36