我有一個現有的ASP.NET網頁,內含幾百行JavaScript代碼行。將JavaScript移到一個外部文件中時document.getElementById('<%= control.ClientID%>')
的代碼是完全的代碼引用服務器端控件的名稱,比如這個:
function SetVisibility(isVisible) {
document.getElementById('<%=someDiv.ClientID%>').style.display = (isVisible ? "block" : "none");
}
如果我移動腳本到外部.js文件中,.ClientID引用不再解決,並且頁面在一堆錯誤中崩潰。
解決此問題的最佳方法是什麼?我可以更改每個函數以將控件作爲參數,或者我可以用$ find()替換.getElementByID ...但我希望有一種更簡單/更快的方法。
嘗試將所有變量賦值頁面移動到一個js變量,並在這些函數中使用該變量。如果你是在4.0版本,你也可以使用clientID靜態模式,所以你不必做前面的步驟。原因是js文件不是由asp.net引擎渲染的,所以這些永遠不會得到解決。如果您使用的是像jquery這樣的插件,那麼您可以輕鬆地將className分配給您的控件的cssClass,甚至可以讓Id包含某些東西(例如:id包含someDiv)。 – PSL
''......或任何ASP.Net引擎處理(cshtml,ashx,vbhtml)? – EdSF
看看這個以及http://www.netfxharmonics.com/2007/09/Creating-JavaScript-objects-from-ASPNET-objects – PSL