比如我在 aspx页面有一个 input控件
<input type="text" id="password" name="password" />
这个id和name有什么用啊?
就像aspx的控件外面取值是通过ID来取的,这个input的ID 和name 哪个才可以取值,或者分别有什么用啊?

解决方案 »

  1.   

    ID是html标签的标识符,如果一个标签没有id而有name,那么就用name值做为标识符
    id主要用于页面内的Javascript引用
    Name用作表单的控件名
    aspx页面时不允许有ID非唯一
    服务器端根据其Name通过Request.Params取得元素提交的值
      

  2.   

    ID 是控件的唯一标识,类似于数据库里的id ,身份证号码
    Name 是该控件的名称   名字
      

  3.   

    首先
    <input type="text" id="password" name="password" />
    这个控件没有runat="server"故他不是服务器控件,你在behind code代码中也点不出来。如果真的要获取他的值,可以使用Request.Form["password"],其中password是标签zhogn 的name
      

  4.   

    服务器端根据其Name通过Request.Params取得元素提交的值 
     
    ID 必须唯一!name 可重复! 多个控件同一个NAME
      

  5.   

    id是唯一的(相当于身份证)
    name可以有多个(相当于姓名)
      

  6.   

    哪有什么控件?html代码(不只一个dom元素,可以有很多)被作为一堆胡乱写的字符串而封装到LiteralControl控件中,跟其它服务器控件一样输出到最终的html给客户端。因此,这个id和name,你只能从客户端才去执行的html dom element去理解,而在服务器端就是一堆字符串胡乱写着玩就可以。例如你故意写错几个字符,或者把name错写成name1,服务器也不管。
      

  7.   

    在初学者中间经常出现一个很普遍的概念错误,以为服务器控件的ID就是这个html dom element的id,这是最容易想当然的。服务器控件的ClientID才等价于id。关于id和name,抛开asp.net,学学html知识,是根本。
      

  8.   

    你知道以下asp.net设计代码<asp:Label runat="server" ID="Label1" Text="hello" />
    <span>password:</span>
    <input type="text" id="password" name="password" />
    <asp:TextBox runat="server" ID="TextBox1" />这里有几个控件?四个?三个!第一个和第三个分别是Label、TextBox,中间那个是一个LiteralControl控件,其Text属性内容是"\r\n<span>password:</span>\r\n<input type=\"text\" id=\"password\" name=\"password\" />\r\n"。这个字符串里胡乱写东西,asp.net原样输出到给客户端的html字符串流中,而不会当作什么控件看待。
    另一个方面,如果我们站在html的dom element角度,来看看id和name的应用。从document出发,用getElementById(...)只能返回一个element,使用getElementByTagName则返回element数组,这可以看到其应用方面的区别。
      

  9.   


    ID 必须唯一!name 可重复! 多个控件同一个NAME从document出发,用getElementById(...)只能返回一个element,使用getElementByTagName则返回element数组,这可以看到其应用方面的区别。楼上的LiteralControl 让我学习到了。。
      

  10.   

    嗯,对bs理解不够,sp老大解释的比我清楚
    其实楼主只要开启Trace,就列的一清二楚了,下面都标识了有多少个Literal
      

  11.   

    最简单的理解: 一般为:id 标识为一个唯一的控件  ,而 name 可以为多个控件所用那么他们就成为一组
    js 体现在  document.getElementById() 和  document.getElementsByName()利用name 可以为 将多个 radio 设置为一组  实现单选
      

  12.   

    另外,在html的dom结构中,是不允许id重复的(重复有时会出现一些莫名其妙的问题)
    但是name可以重复并且,在ie7以前的版本中,document.getElementById(id或name)都可以取得dom对象
    在ie8中,document.getElementById(name)已经无法取得对象
    只有document.getElementById(name)可以取得
      

  13.   

    [Quote=引用 17 楼 youbl 的回复:]
    另外,在html的dom结构中,是不允许id重复的(重复有时会出现一些莫名其妙的问题)
    但是name可以重复并且,在ie7以前的版本中,document.getElementById(id或name)都可以取得dom对象
    在ie8中,document.getElementById(name)已经无法取得对象
    只有document.getElementById(name)可以取得
    引用楼主 yison1128 的回复:比如我在 aspx页面有一个 input控件 <input type="text" id="password" name="password" /> 这个id和name有什么用啊?就像aspx的控件外面取值是通过ID来取的,这个input的ID 和name 哪个才可以取值,或者分别有什么用啊?
      

  14.   

    你在后台获取值的时候要用的ID用的不是name,前台JavaScript获取基本没去别就又可以获取
      

  15.   

    ID=你的身份证号
    NAME=你的名字
    明白了吗?
      

  16.   

    mingbaima,bumingbai,mingbai,bumingbai...???!
      

  17.   

    ID是html标签的标识符,如果一个标签没有id而有name,那么就用name值做为标识符 
    id主要用于页面内的Javascript引用 
    Name用作表单的控件名 
    aspx页面时不允许有ID非唯一 
    服务器端根据其Name通过Request.Params取得元素提交的值
      

  18.   

    楼上都说得很清楚了,ID是唯一的,而Name是可以有重复的
      

  19.   

    ID就不多说了。Name 主要是在表单提交的时候,给提交的数据起个名字。提交表单的时候,ID值是不会提交的,只会提交 Name 和 Value(针对于文本框类)。后台只能通过Name来区分是哪个控件的值。