一千萬個為什麽

搜索

ASP.Net從哪裏獲取其呈現的ID?

我繼承了一個項目,其中包含一些依賴於硬編碼對象ID的討厭的JavaScript 即有很多地方可以做這樣的事情

var magazine = document.getElementById('repModuleDisplay__ctl3_chkCats_0');

當頁面在我的UAT環境中呈現時,HTML看起來像這樣,一切正常。

<input id="repModuleDisplay__ctl3_chkCats_0" 
    type="checkbox" name="repModuleDisplay:_ctl3:chkCats:0"  
    ... etc

但是,當我把它放在我的生產環境中時,HTML會突然出現這樣的情況:

<input id="repModuleDisplay_ctl03_chkCats_0" 
    type="checkbox" name="repModuleDisplay$ctl03$chkCats$0" 
    ... etc

ids的不同意味著JavaScript無法找到Element,並且失敗了。

在一個理想的世界中,我會刪除錯誤的JavaScript並再次正確地執行它,但是為了快速修復,我想知道是什麽導致兩個環境之間的渲染差異。

有沒有人有任何想法?

謝謝, 尼爾

最佳答案

我能想到的最快最簡單的修復 - 如果代碼遍布整個地方可能不是特別快速或簡單 - 就是使用控件的實際 ClientID 屬性而不是嘗試猜猜生成的id可能是什麽:

// i've assumed that the control is named chkCats
var magazine = document.getElementById('');

轉載註明原文: ASP.Net從哪裏獲取其呈現的ID?