为什么我的控件获得不同的id命名约定?

时间:2011-06-09 19:33:24

标签: asp.net controls

我有一个带有以下模板字段的网格视图

<asp:TemplateField>
  <ItemTemplate>
    <asp:Button ID="btnLoad" runat="server" Text="Load" CssClass="inptBtn" OnClientClick="return loadPlans(this);"  UseSubmitBehavior="false" />
  <ItemTemplate>
</asp:TemplateField>

这已经好了一段时间。在onclick上,我们运行一些代码来检查.NET为此控件生成的Id,并对其进行处理。在过去,生成的Id看起来像这样

  

gvPlans_ctl02_hdPlans

这仍然是我们的开发和测试环境中生成的内容,但是在prod中,它现在看起来像这样

  

gvPlans_hdPlans_0

这两种环境中的代码绝对相同,但我不确定导致命名约定更改的原因。我试图谷歌一个答案,但搜索条件对于这个问题有点通用,所以我转向可靠的SO。我假设答案可能与正在运行的框架或类似的简单事件有关。如果您有任何想法,请告诉我,谢谢!

4 个答案:

答案 0 :(得分:3)

阅读this,我认为这会有所帮助。

答案 1 :(得分:2)

答案 2 :(得分:1)

如果您使用的是.NET4,则可以试用ClientIDMode。但总的来说,生成的cliend id无关紧要。您应该能够在javascript和其他地方使用control.ClientID以避免直接引用生成的客户端ID,在这种情况下,即使标记生成了b / w测试服务器和生产,您的代码逻辑应该能够适应。

答案 3 :(得分:0)

检查此应用程序和目标框架的应用程序池。目标框架似乎在prod和dev / text env之间是不同的。还要检查已安装的框架和SP。