2012-02-16 44 views
0

我有一个ASP.NET用户控件,我想写一些动态JavaScript(基本上是一个JQuery调用来打开一个手风琴节点)。ASP.NET,ScriptManager,历史点和动态的Javascript

使问题复杂化,我使用历史点。简而言之,我需要根据存储在URL中的历史点数据中的值打开JQueryUI手风琴。

我已经设置了设置历史点的部分,并且可以在浏览历史记录时浏览我的代码(下面)。问题是,在这个例子中,我的脚本从不在页面上呈现。

protected void uxScriptManager_OnNavigate(Object sender, HistoryEventArgs e) 
    { 
     if(!String.IsNullOrEmpty(e.State["activeTab"])) 
     { 
      ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "xScript", "alert('Hello,world!');", true); 
     } 
    } 

我做错了什么?

附录

我一直在修修补补,而且好像我的电话注册clientscriptblock工作在其他事件罚款...但在导航事件的ScriptManager的,我不能写新脚本进入页面。我在想什么,我试图做的是不可能的...

+0

问题类似于http://stackoverflow.com/questions/9278466/html-elements-hiding-after-asp-button-click – 2012-02-16 23:20:57

回答

0

它看起来像你需要通过调用ScriptManager.RegisterStartupScript方法来显示页面上的元素添加脚本:

ScriptManager.RegisterStartupScript(对此,this.GetType(),this.ID, “” 警报( '你好,世界!');”,真);

+0

你好伊万。我尝试过 - 但是似乎发生的事情是Navigate事件,我无法将新的脚本块添加到页面中。我认为这是因为页面正在被读出历史记录,而不是完全重新呈现。服务器端调用工作正常,但在这种特殊情况下,我需要挂在客户端脚本中,而且看起来不可能。 (如果我将该脚本的相同代码块移动到另一个事件,则它可以正常工作) – Tim 2012-02-17 13:30:20

1

从我发现,它看起来并不像它的可能在Navigate事件中写入新的客户端脚本到页面 - 或者更改现有脚本块中的值 - 我注意到这一点,以防其他人试图做同样的事情ING。

修正

我发现它可以做我想做的!

  • 我需要设置历史点在页面生命周期
  • 我需要设置动态脚本中的RegisterStartupScript方法页面

(伊万的帖子指出的早期部分我在正确的方向,所以我已经标记他的帖子作为答案)