gpt4 book ai didi

javascript - 子控件命名标准改变了吗?

转载 作者:行者123 更新时间:2023-11-29 15:44:47 25 4
gpt4 key购买 nike

我在 ASP.NET 页面上有一个 JavaScript 函数,当网格标题中的“全部选中”复选框被选中时,该函数将选中客户端网格中的所有框。它通过在 JS 函数中为循环中的每一行构造实际控件 ID 来实现这一点(即 + '_ctl' + i + '' + 其中 i 是当前循环的行索引)然后将生成的控件设置为已选中。

这在很长一段时间内都运行良好,但现在已停止运行,原因是 .NET 渲染引擎或其他创建内部控件 ID 的方式不同。例如,当在另一个服务器上查看页面的源代码时,控件名称是 dgMain__ctl2_cbxChecked,但在服务器上的控件名称是 dgMain__ctl02_cbxChecked 。不同之处在于,在无效版本的“ctl”部分的数字 ID 前面有一个额外的“0”。

我想知道这是否与 .NET 版本有关?它不能在我相对较新的本地机器上运行(用于在旧机器上运行),但它仍然可以在部署在生产环境中的旧服务器上运行。两个版本都运行 ASP.NET 1.1(是的,我知道 - 与时俱进)。

关于如何解决这个问题的任何线索?

最佳答案

这是一种相当危险的做法。您应该改为收集生成的控件 ClientID 的服务器端,然后使用 ClientScriptManager 将它们传递给您的 JavaScript。另一种方法是使用 CssClass 并使用 jQuery 或其他一些 DOM 操作库来查找您的控件。

控件命名约定使得 ID 无法保证。它可以从 .NET 版本更改到版本(尽管不太可能),并且可以根据页面上的其他控件或用户控件的嵌套级别等进行更改。

关于javascript - 子控件命名标准改变了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13386910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com