asp.net 1.1在用户控件里面的 <input type="text" id=  name=  runat="server"> 输入框
在显示的时候 id 和 name 前面总是被佳上 uc1: 或者 uc1_ 的前缀,而 <botton runat=server id=  name= > 
在显示的时候 id 被加了前缀,name 却没有加, 真是奇怪。害的 javascript 里面都不知道怎么好,为什么有的 name 加前缀而有的 name 不加呢?

解决方案 »

  1.   

    id=  name=
    为什么要这样做呢?
      

  2.   

    客户端输出的id可以使用控件的ClientID属性获得,name属性可以使用UniqueID属性来获得。客户端的id和name通常都没有属性能够设置。想在服务器控件上去找这两个属性,可能是因为自己认为理解了html就一定能对号入座到服务器控件上。服务器控件的id根本不是客户端id,而是在服务器端的id,完全不是一回事。
      

  3.   

    uc1: user contorl
    就是用户控件的缩写!
    一般来说,是不会加的阿!
    你可以用<%=xxx.ClientID%>来获取控件的id
      

  4.   

    对于“<botton runat=server id=  name= > ”来说,asp.net根本不知道你写的name=是什么意思,它对html控件中所有不认识的属性都胡乱输出不加阻拦,(顶多是html设计器有个提示),到底是你故意要输出这个属性还是不小心写错了,例如你可能把onclick错写成onclik,它不负责,由你负责。
      

  5.   

    大家搞错了。id="A"  name="B"   这里我是省略,不是没有,而是大家都知道,可以是随便什么东西。
      

  6.   

    我是说,用户控件里面的id 都被加了 uc1 的前缀,大家都遇到的吧,不可能没有遇到吧?为什么大家都很奇怪的样子?
      

  7.   

    你没有明白吗?服务器控件根本不懂name是什么属性,所以它给你原样输出。服务器控件都有自己的id属性,所以你写的id当作它的id属性解释,而服务器控件的id不是客户端id,(ReadOnly的)ClientID属性才是。“用户控件里面的id 都被加了 uc1 的前缀”,你显然是把服务器控件的id误认为客户端id了。
      

  8.   

    也不是这样的,如在用户控件 uc1 里面放 <INPUT id="A" name="B" type="text" runat="server">当 IE 显示的时候这个控件为 id="uc1_A" name="uc1:A"   这里 name 与原来不一样而在用户控件 uc1 里面放 <button id="C" name="D" runat="server" >OK</button>当 IE 显示的时候这个控件为 id="uc1_C" name="D"         这里 name 与原来一样但所有的 id 都被加了前缀。 为何一个 name 变,一个 name 不变 ??
      

  9.   

    YourControl.ClientID  ??ClientID  ??
      

  10.   

    这是很显然的,既然会用到用户自定义控件,那么在每个你引用这个控件的不同页面中,.net都会跟据页面名字,动态更改id!
    建议看下msdn上的解释!用户自定义控件!!
      

  11.   

    ****为何一个 name 变,一个 name 不变 ??,
    这个问题是因为现在的html已经不建议使用name了,特别是微软的一些标准 !你可以在程序编译以后看下警告!很多提示,都是说一些东西已经过时!
      

  12.   

    添加到页面后. 全在原来的名字前加上用户控件的名字 ...不光是用户控件.. 如果你试着在GRIDVIEW或者是DATAGRID的里面动态添加控件.它们的名字也是会改的.. 尽管变得有点麻烦,还是有规律性的按行的下标和控件名进行重命名..如果是要用JS来找这些控件. 最好是用(this)来传值它的ID.或者是当前活动的控件来找..只想着getElemetByName 之类的对于这些不是很管用的..