2010-10-13 96 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