ASP.NET,ScriptManager,历史记录点和动态Javascript

时间:2012-02-16 21:19:26

标签: c# jquery asp.net jquery-ui

我有一个ASP.NET用户控件,我想写一些动态Javascript(基本上是一个JQuery调用来打开一个折叠节点)。

使问题复杂化,我正在使用历史点。简而言之,我需要根据存储在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);
        }
    }

我做错了吗?

附录

我一直在修补,似乎我在其他事件中注册clientcriptblock的工作正常......但是在scriptmanager的Navigate事件中,我无法将新脚本编写到页面中。我在想我不想做的事情......

2 个答案:

答案 0 :(得分:1)

从我发现的情况来看,似乎不可能在Navigate事件上将新客户端脚本写入页面 - 或更改现有脚本块中的值。我注意到这是为了防止其他人试图做同样的事情。

<强> CORRECTION

我发现 可以做我想要的事情!

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

(伊万的帖子指出我正确的方向,所以我把他的帖子标记为答案)

答案 1 :(得分:0)

看起来您需要通过调用ScriptManager.RegisterStartupScript方法来添加脚本以在页面上显示元素:

  

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