在ASP.NET頁面上有一個JavaScript函數,當網格標題中選中「全部選中」複選框時,它將檢查客戶端網格中的所有框。它通過在循環中爲每一行構造JS函數中的實際控制ID(即+'_ ctl'+ i +''+,其中i是當前循環的行索引),然後設置結果控制檢查。子控件命名標準改變了嗎?
這很長時間以來工作正常,但現在它已停止工作,原因是.NET渲染引擎或任何正在創建內部控制ID的不同。例如,在不同的服務器上查看源代碼時,控件名稱爲dgMain__ctl2_cbxChecked,但該服務器上無法運行的控件名稱爲dgMain__ctl02_cbxChecked。不同之處在於,在不工作的版本的'ctl'部分的數字ID之前存在額外的''。
我想知道這是否與.NET版本?它不適用於我的本地計算機,它相對比較新(用於在舊計算機上工作),但它仍然適用於部署在生產環境中的舊服務器。這兩個版本都運行ASP.NET 1.1(是的,我知道 - 隨着時間的推移)。
任何關於如何解決這個問題的線索?
簡單的解決方案,請勿使用ID。使用類名稱和'[data - *]'屬性將數據傳遞給JavaScript。它將允許您將腳本保存在自己的JS文件中,而不是嘗試在HTML文件中構建腳本。 – zzzzBov