比如说有个自定义控件ucLogin.ascx, ucLogin上有<asp:textbox id="txtName" runat="server" />
index.aspx上用了自定义控件ucLogin 
<uc1:ucLogin ID="login" runat="server" EnableViewState="true"/>
运行index.aspx 查看源代码 textbox 的id就成了login_txtName,有没有办法不带前面的login_?

解决方案 »

  1.   

    这是因为你硬要把asp.net控件的id说成是html标签的id。根本不是!asp.net控件的ClientID属性才输出html标签的id。“ID="login"”跟“查看源代码 textbox 的id”根本不是一个东西,你把它理解成一个就错了。
      

  2.   

    你可以自己看一下这些解释:http://www.google.cn/search?hl=zh-CN&q=asp.net+clientid&meta=&aq=f&oq=看来对asp.net控件的最基本属性(ID和ClientID)还要从头学起啊。
      

  3.   

    另外,还是不要把ascx称为自定义控件吧。就叫做用户控件好了。自定义控件默认地有其它含义。
      

  4.   

    我知道他俩不是一个东西 关键是我把<uc1:ucLogin ID="login" runat="server" EnableViewState="true"/> 
    它的id改成什么,textbox的id前面就加了什么..
      

  5.   


    如果你使用login里边的控件输出客户端代码时正确地使用ClientID,你不用管ucLogin控件的id是什么,总是正确的。写程序就应该写出总是正确的代码,而根本用不着去看html源代码来揣测textbox的客户端id。asp.net不论如何生成textbox的客户端id都跟你的代码的正确写法没有关系。