我最近将网站从一台服务器迁移到另一台服务器。这些网站已在IIS上正确设置并且能够连接。但是,我遇到了.net为asp.net控件添加的前缀问题。 asp.net控件(如文本框)自动为ct100_添加控件名称前缀。这工作正常,因为我在javascript中引用了ct100_nameofthecontrol。但现在前缀已更改为ct100 $而不是ct100 _
例如
我在页面上有一个名为 txtSearchName 的asp.net控件文本框。呈现页面时,文本框的名称已从 txtSearchName 更改为 ctl00_bodyContent_txtSearchName ,但在迁移后,相同的名称将更改为 ctl00 $ bodyContent $ txtSearchName 即可。
有没有办法或配置来改变_用$或者我必须更改对javascript代码的引用?
请帮助
谢谢
更新了解决方案:
代码应将ClientIDMode设置为静态的控件。但是,应用程序已经由开发人员构建,并且在服务器更改时引发了这个错误。如果我需要更改代码并且它可能在某一点上很容易破坏代码,那么这是一件非常烦人的任务。 _和$符号取决于CLR版本。我在IIS管理器的应用程序池中将CLR版本从V4.0更改为V2.0,一切正常。
答案 0 :(得分:1)
您不应该在JavaScript中对ID进行硬编码。你确实可以使用ClientIDMode="Static"
,但不推荐这样做,因为它可能导致重复的ID。更好地使用ClientID
$("#<%= txtSearchName.ClientID %>").val('');
$("#<%= txtSearchName.ClientID %>").focus();