为什么我们在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" />
这些是相同的控件
答案 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(它实际上是一个用户控件,它被注入页面的控件层次结构中)。命名容器的所有子节点都将容器名称作为前缀,以便将控件名称与另一个容器中具有相同名称的控件消除歧义。