我有一个托管在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