C# ASP.NET webforms不同的Id';s

C# ASP.NET webforms不同的Id';s,c#,asp.net,webforms,C#,Asp.net,Webforms,我在aspx文件中有这段代码 <form runat="server"> 这并不复杂。但事实证明确实如此。 在我的计算机和测试环境中,它转换为: <form id="aspnetForm" ....> 但在生产过程中,它变成: <form id="ctl00" .... > 多亏了我的前任,很多JS都被“aspnetForm”id挂住了,它不能正常工作。 那么,这种身份生成差异来自哪里 另外,我知道其中一个解决方案就是重写JS查询,或者在表单

我在aspx文件中有这段代码

<form runat="server">

这并不复杂。但事实证明确实如此。 在我的计算机和测试环境中,它转换为:

<form id="aspnetForm" ....>

但在生产过程中,它变成:

<form id="ctl00" .... >

多亏了我的前任,很多JS都被“aspnetForm”id挂住了,它不能正常工作。
那么,这种身份生成差异来自哪里


另外,我知道其中一个解决方案就是重写JS查询,或者在表单上添加类标记,然后查询它。尽管我仍然对这些事情发生的原因感兴趣。

开始编辑

您的pc和测试环境中使用了哪个版本的.Net framework,服务器上使用了哪个版本?-这将极大地影响任何关于为什么会发生这种情况的答案的正确性——特别是如果它们略有不同的话。页面上只有一张表格吗

结束编辑

要获取javascript中的表单名称,请使用以下命令:

<script>  
    theForms = document.getElementsByTagName("form");  

    for(i=0;i<theForms.length;i++)  
        alert(theForms[i].name);  
</script>

theForms=document.getElementsByTagName(“表单”);

对于(i=0;i你可以使用
ClientIdMode
停止对
Static

的更改。他不是在问怎么做。他是在问为什么会发生这种情况?这篇文章可能很有帮助,因为它提供了一种与OP声明的解决方案不同的解决方案,即仅javascript的解决方案。请看,他不是在问怎么做。他是一个为什么会发生这种情况?你们读过这个问题吗?我在问“为什么ID在不同的环境中生成的方式可能不同”。这不是为什么要覆盖id标记,这在我的情况下没有意义,因为没有标记。是的,我读了你的问题,你读了我链接到的问题及其标题了吗?每个ASP.NET WebForms页面都会生成一个
标记。在各种情况下,此标记会生成一个名称,如图所示:“当命名容器与当前页面不同[…]时,UniqueID属性返回“aspnetForm”。此属性被呈现到表单标记中发送给客户端的name属性中。因此,如果确实需要,您可以通过从htmlform继承创建自己的表单,然后重写UniqueID属性或name属性。”。此外,当相同的代码在测试环境和生产环境之间的行为不同时,您的测试环境很可能与您的生产配置不匹配。
<script>  
    theForms = document.getElementsByTagName("form");  

    alert(theForms[0].name);  
</script>