如何从 ASPX 控件事件调用 Javascript 函数?
具体来说,我想从 DropDownList 的 SelectedIndexChanged 事件中调用该函数。
每当我看到这种问题时,我都会有点紧张,因为十有八九这意味着提问者并不真正明白发生了什么。
当您的 SelectedIndexChanged 事件在服务器上触发时,它作为完整回发。这意味着要运行该代码,页面加载代码的整个其余部分也必须运行。
更重要的是,代码作为来自浏览器的新 http 请求的结果运行。就浏览器而言,结果中将返回一个全新的页面。旧页面和旧 DOM 将被丢弃。因此,当您的 SelectedIndexChanged 事件代码运行时,您要调用的 JavaScript 函数在浏览器中甚至不存在。
那么该怎么办呢?您有几个选择:
- 更改页面,以便控件根本不会回发到服务器。在客户端完全用 JavaScript 检测更改。这是我的首选选项,因为它可以避免浏览器页面中出现奇怪的加载脚本,并且可以节省服务器的工作量。缺点是它使您的页面依赖于 javascript,但这并不是什么大问题,因为如果禁用 javascript,这从一开始就注定了。
- 使用 ClientScript.SetStartupScript() 设置所需的 javascript 以在 SelectedIndexChanged 事件中运行 onload。
- 将 javascript 的预期结果应用到页面的服务器模型。这样做的优点是即使在关闭 javascript 时也能工作(可访问性),但代价是在服务器上做更多的工作,花费更多的时间来推理页面的逻辑状态,并且可能需要复制客户端和服务器端逻辑。另外,这个事件无论如何都依赖于 javascript:如果 javascript 被禁用,它就不会触发。
- 第一个和第三个选项的某种组合也是可能的,这样它在本地使用 javascript(如果可用),但如果不可用则回发到服务器。就我个人而言,我希望看到对 ASP.Net 内置功能的更好、更直观的支持。但再次强调:我说的是一般情况。这个特定的事件需要 JavaScript 才能工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)