ASP.NET、ScriptManager、历史点和动态Javascript

本文关键字:动态 Javascript 历史 NET ScriptManager ASP | 更新日期: 2023-09-27 18:24:58

我有一个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);
        }
    }

我做错什么了吗?

附录

我一直在修补,似乎我注册clientscriptblock的调用在其他事件中运行良好。。。但是在scriptmanager的Navigate事件中,我无法将新脚本写入页面。我在想我想做的是不可能的。。。

ASP.NET、ScriptManager、历史点和动态Javascript

根据我的发现,在Navigate事件中,似乎不可能将新的客户端脚本写入页面,也不可能更改现有脚本块中的值。我注意到这一点,以防其他人试图做同样的事情。

更正

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

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

(Ivan的帖子为我指明了正确的方向,所以我已经将他的帖子标记为答案)

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

ScriptManager.RegisterStartupScript(this,this.GetType(),this。身份证件"警报(‘你好,世界!’);",true);