控制ID在母版页中自动更改

时间:2010-09-24 08:44:33

标签: c# asp.net html

为什么我们在masterpage中使用它时控件的id会自动改变,而在简单的页面中它不会改变?

这是运行MasterPage后的源代码

as :: <input name="ctl00$cp1$txtUName" type="text" id="ctl00_cp1_txtUName" style="width:128px;" />

这是运行简单页面

后的源代码

AS:<input name="txtUName" type="text" id="txtUName" />

这些是相同的控件

3 个答案:

答案 0 :(得分:4)

事实并非如此,当您使用runat =“server”的输入控件时,它的id将由服务器生成。如果您使用的是asp.net 4.0,那么您可以在CliendIDMode="static"声明中使用<% @page ...来阻止它。

答案 1 :(得分:2)

我猜这个问题是由你正在使用的一些javascript引起的,它不再引用正确的ID(因为它已经改变)。如果是这样,当您从服务器发送javascript时,请使用clientID方法。因此,例如alert('<%= txtUName.ClientID %>')将生成一个警报框,其中包含运行时正确的ID

答案 2 :(得分:1)

我猜您在母版页中使用了TextboxControl,而您在问题中显示的内容是生成的HTML。

母版页是naming container(它实际上是一个用户控件,它被注入页面的控件层次结构中)。命名容器的所有子节点都将容器名称作为前缀,以便将控件名称与另一个容器中具有相同名称的控件消除歧义。