我有一個託管在GoDaddy上的網站,它們有4.0版本的運行時。 問題是服務器控件的客戶端ID被生成爲「contentPlaceHolder1_drpBanks」,它早些時候(當網站在其他某個服務器上時)生成爲「ctl00_contentPlaceHolder1_drpBanks」。當將asp.net 2.0網站部署到Framework 4.0時ClientID發生變化
我需要知道的是有辦法解決這個問題,這樣我就不必在代碼中進行任何更改。
就像在web.config文件或其他東西的設置。
我有一個託管在GoDaddy上的網站,它們有4.0版本的運行時。 問題是服務器控件的客戶端ID被生成爲「contentPlaceHolder1_drpBanks」,它早些時候(當網站在其他某個服務器上時)生成爲「ctl00_contentPlaceHolder1_drpBanks」。當將asp.net 2.0網站部署到Framework 4.0時ClientID發生變化
我需要知道的是有辦法解決這個問題,這樣我就不必在代碼中進行任何更改。
就像在web.config文件或其他東西的設置。
將來使用<%=Control.ClientID%>
這將成功解決每一次 - 無需更改代碼。
ASP.NET 4.0中的控件具有ClientIDMode
屬性。如果將其設置爲AutoID
,則ASP.NET應以與在ASP.NET 2.0中相同的方式生成客戶端ID。這是一個article,它解釋了不同的客戶端ID模式。
除了在控制級別設置ClientIDMode
,您還可以將其設置在頁面或應用程序級別:
<%@ Page Language="C#" ClientIDMode ="AutoID" ... %>
或
<system.web>
<pages clientIDMode="AutoID" />
</system.web>
但我與leppie的評論認爲,這是危險的依賴生成的客戶端ID。
當然,我會在下次開始時小心謹慎。非常感謝 – Sandhurst 2010-10-13 09:57:33
未來的讀者:請注意* ClientIDMode * http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode.aspx和*文章* http://msdn.microsoft。 com/en-us/library/system.web.ui.control.clientidmode.aspx不包含相同的信息。 – LosManos 2011-09-12 17:41:19
有沒有什麼辦法可以在ASP.NET2.0中實現這個功能?我的意思是在2.0 ClientIDCode =「靜態」的功能。(預定義的ID在Web應用程序中,這不應該以其他方式改變會影響其他地方。 – 2015-02-03 17:13:37
你學到了一個寶貴的教訓,不要依靠自動生成的名字。有很多更好的方法來處理這個問題。 – leppie 2010-10-13 09:13:47