单身节文案:观察 HTML中id和name 的差异,被微软忽悠过的同学自动举手

来源:百度文库 编辑:中财网 时间:2024/04/29 03:00:31

     很早以前,记得在ASP.NET中,只要是在服务器控件里面添加了name属性,就会有一条警告,如下图所示,久而久之,以为对与html而言,name属性是多余的,可以去掉的,直到ASP.NET mvc的出现,鼓励细粒度的控制HTML的展示,才发现被微软欺骗了好几年!

 

   下面是一个简单的html表单,几个单选和多选框还有一个文本框,这些html标签只有id属性,没有name属性

 

 <% using (Html.BeginForm())
    { %>
    
    
    
    
    
    
    
    
    
    
    <%} %>

    观察了进行选择后提交表单,我开始震惊了!id属性神马也不是啊

    提交表单

 

      get

 

     为标签添加了name属性,进一步观察

 

 <% using (Html.BeginForm())
    { %>
    
    
    
    
    
    
    
    
    
    
    <%} %>

 

     提交表单,发现有数据了,原来name属性很有用;

     对与多选和单选,选择默认的值是“on”

      服务器端接受到的数据,选择的默认值都是“on”

 

对与多选和单选,我将name属性改为一致,分组,观察一下

 

 <% using (Html.BeginForm())
    { %>
    
    
    
    
    
    
    
    
    
    
    <%} %>
.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;width: 100%;margin: 0em;}.csharpcode .lnum { color: #606060; }

 

提交表单,客户端的变化在意料之中

 

服务器端,接受到的数据已经有了变化,多选的值用,分割了,但选择的默认值都是“on”

 

 

给单选和多选分别给定值后,

客户端的变化

 

 

服务器端的变化,这样已经可以判断用户的操作了

 

如果将id属性去掉呢?

 <% using (Html.BeginForm())
    { %>
    
    
    
    
    
    
    
    
    
    
    <%} %>

客户端的变化是没有变化

 

小结:对与html提交表单而言,name属性是必须的,而id属性是可选的