在 UpdatePanel 更新后注册动态 javascript
Posted
技术标签:
【中文标题】在 UpdatePanel 更新后注册动态 javascript【英文标题】:Registering a dynamic javascript after an UpdatePanel's update 【发布时间】:2010-10-03 23:44:40 【问题描述】:我有一个动态创建的 javascript 页面(脚本实际上是相当静态的,但其变量的值是根据用户输入填充的)。
获取用户输入的结果和控件位于 UpdatePanel 中,该面板会根据某些用户输入进行自我更新。其中一些用户输入会导致我之前提到的变量发生变化,因此我需要注册一个新的 javascript。
问题当然是只有更新面板得到更新,并且脚本在更新面板之外注册,因此没有添加新脚本。
您认为现在的最佳做法是什么?我可以通过让这个脚本(和变量)在更新面板 inside 中存在来解决这个问题,或者我可以确保在需要发布新的 javascript 时完全重新加载页面?我已经在页面上的 ScriptManager 可能可以帮助我解决这个问题...
所以我正在寻找有类似问题并以很好的方式解决它们的人,或者只是有一些好主意的人:)
【问题讨论】:
【参考方案1】:看看ScriptManager.RegisterClientScriptBlock
。
【讨论】:
【参考方案2】:ScriptManager.RegisterStartupScript
的运气比ScriptManager.RegisterClientScriptBlock
的好。你可以试一试。
【讨论】:
【参考方案3】:为什么不直接将变量放在更新面板中,或者让 JavaScript 通过 DOM 获取值?
【讨论】:
是的,放置变量(或完整脚本)是我的建议之一,但感谢这一点 - javascript 无法通过 dom 获取它,因为数据不是 dom 的一部分(它是实际上用于更新 dom 的数据作为用户输入的东西) 您可以将数据添加到 DOM,或者拧紧 UpdatePanel,然后调用 AJAX/SciptMethod 来获取数据。 拧紧更新面板似乎是正确的选择。 UpdatePanel 又快又脏,但有时还不够以上是关于在 UpdatePanel 更新后注册动态 javascript的主要内容,如果未能解决你的问题,请参考以下文章
找不到ID为'xxx'的UpdatePanel。如果它是动态更新的,那么它必须在另一个UpdatePanel内
UpdatePanel AsyncPostBackTrigger PostBackTrigger 区别