【发布时间】:2012-11-03 10:14:09
【问题描述】:
我在 ASP.NET 页面上有一个 JavaScript 函数,当在网格标题中选中“检查所有”复选框时,它将检查客户端网格中的所有框。它通过在 JS 函数中为循环中的每一行构造实际的控件 ID 来实现这一点(即 + '_ctl' + i + '' + 其中 i 是当前循环的行索引)然后将生成的控件设置为选中。
这已经运行了很长时间,但现在它停止了工作,原因是 .NET 渲染引擎或创建内部控件 ID 的任何东西不同。例如,当在另一台服务器上查看页面源时,该页面仍在运行,控件名称为 dgMain__ctl2_cbxChecked,但该服务器上的控件名称为 dgMain__ctl02_cbxChecked 。不同之处在于,在无效版本的“ctl”部分的数字 ID 前面有一个额外的“0”。
我想知道这是否与 .NET 的版本有关?它不适用于我相对较新的本地机器(用于在旧机器上工作),但它仍然可以在部署在生产中的旧服务器上运行。两个版本都运行 ASP.NET 1.1(是的,我知道 - 与时俱进)。
关于如何解决这个问题的任何线索?
【问题讨论】:
-
简单的解决方案,不要使用 ID。使用类名和
[data-*]属性将数据传递给 JavaScript。它允许您将脚本保存在自己的 JS 文件中,而不是尝试在 HTML 文件中构建脚本。
标签: javascript asp.net controls