2010-10-13 18 views
2

我有一個託管在GoDaddy上的網站,它們有4.0版本的運行時。 問題是服務器控件的客戶端ID被生成爲「contentPlaceHolder1_drpBanks」,它早些時候(當網站在其他某個服務器上時)生成爲「ctl00_contentPlaceHolder1_drpBanks」。當將asp.net 2.0網站部署到Framework 4.0時ClientID發生變化

我需要知道的是有辦法解決這個問題,這樣我就不必在代碼中進行任何更改。

就像在web.config文件或其他東西的設置。

+2

你學到了一個寶貴的教訓,不要依靠自動生成的名字。有很多更好的方法來處理這個問題。 – leppie 2010-10-13 09:13:47

回答

2

將來使用<%=Control.ClientID%>這將成功解決每一次 - 無需更改代碼。

1

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。

+0

當然,我會在下次開始時小心謹慎。非常感謝 – Sandhurst 2010-10-13 09:57:33

+0

未來的讀者:請注意* 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

+0

有沒有什麼辦法可以在ASP.NET2.0中實現這個功能?我的意思是在2.0 ClientIDCode =「靜態」的功能。(預定義的ID在Web應用程序中,這不應該以其他方式改變會影響其他地方。 – 2015-02-03 17:13:37