好的,这感觉就像一个应该很容易回答的问题,但是像asp.net和jQuery混合那么多,这有点噩梦。从asp.net代码隐藏中执行Javascript函数?
我想要做我的asp.net页面的客户机的观看过程中可以淡入淡出一div
在不同的时间;我在使用jQuery的fadeTo()
之前将其淡出,然后触发UpdatePanel更新(表示数据不是新鲜的),并且我想在更新UpdatePanel后再次将其淡入淡出。我已经尽可能在代码隐藏中更新UpdatePanel,并且这导致div
的内容更改......但是如何再次将div
淡化?
我看到它,有2种方式的方式;在页面加载时注册一个事件处理程序以检测div
的内容何时被更改并淡入,或者在更新div
以使其淡入时调用asp.net代码隐藏的函数。
在第一种情况下,似乎没有要由div
的内容改变触发任何事件,所以我似乎无法做到这一点。如果有人知道如何在更新div
时得到客户端事件触发,那将是一个不错的解决方案。
在第二种情况下,我认为这是一次什么样的ClientScriptManager
,但它并不完全做我想做的。我希望能够注册一个特定的Javascript函数ClientScriptManager
,然后告诉ClientScriptManager
在我的代码隐藏中在客户端执行它。你似乎无法做到这一点。 ClientScriptManager.RegisterClientScriptBlock()
只是将一些<script>
插入到HTML输出中,而不是调用函数。据推测,如果我保持注册状的东西这样的工作:
<script>fadeBackIn();</script>
因为使用Javascript将立即评估和运行,但这种感觉乱了,这种感觉是由事实加剧了,我不得不保持随机产生为ClientScriptManager.RegisterClientScriptBlock()
的key
争论一个新的独特的价值,因为它是专门用来停止这种重复的代码。但是,我正在努力寻找替代方案。任何人都可以想出一个好主意,以更好的机制来实现这个工作吗?
我真的很想沿着线的东西:
ClientScriptManager.RegisterClientScriptFunction("fadeBackIn", "function fadeBackIn(){ ... }");
[...]
ClientScriptManager.ExecuteClientScriptFunction("fadeBackIn");
,但我不认为这功能可用。 :-(
你怎么能指望的时候被在服务器上执行它ClientScriptManager调用客户端代码? – Dismissile 2010-11-03 14:27:42
推测,使用允许代码隐藏动态更新UpdatePanel内容的相同机制。一个允许客户端和服务器之间进行AJAX通信的框架。 – Jez 2010-11-03 14:29:08