很早以前,記得在ASP.NET中,只要是在服務(wù)器控件里面添加了name屬性,,就會(huì)有一條警告,,如下圖所示,久而久之,,以為對與html而言,,name屬性是多余的,可以去掉的,,直到ASP.NET mvc的出現(xiàn),,鼓勵(lì)細(xì)粒度的控制HTML的展示,才發(fā)現(xiàn)被微軟欺騙了好幾年,!
下面是一個(gè)簡單的html表單,,幾個(gè)單選和多選框還有一個(gè)文本框,這些html標(biāo)簽只有id屬性,,沒有name屬性
<% using (Html.BeginForm()) { %>
<input id="Checkbox1" type="checkbox" /> <input id="Checkbox2" type="checkbox" /> <input id="Checkbox3" type="checkbox" /> <input id="Checkbox4" type="checkbox" /> <input id="Checkbox5" type="checkbox" /> <input id="Radio1" type="radio" /> <input id="Radio2" type="radio" /> <input id="Radio3" type="radio" /> <input id="Text1" type="text" /> <input id="Submit1" type="submit" value="submit" /> <%} %> 觀察了進(jìn)行選擇后提交表單,,我開始震驚了!id屬性神馬也不是啊 提交表單
為標(biāo)簽添加了name屬性,,進(jìn)一步觀察
<% using (Html.BeginForm()) { %>
<input id="Checkbox1" name="Checkbox1" type="checkbox" /> <input id="Checkbox2" name="Checkbox2" type="checkbox" /> <input id="Checkbox3" name="Checkbox3" type="checkbox" /> <input id="Checkbox4" name="Checkbox4" type="checkbox" /> <input id="Checkbox5" name="Checkbox5" type="checkbox" /> <input id="Radio1" name="Radio1" type="radio" /> <input id="Radio2" name="Radio2" type="radio" /> <input id="Radio3" name="Radio3" type="radio" /> <input id="Text1" name="Text1" type="text" /> <input id="Submit1" type="submit" value="submit" /> <%} %>
提交表單,,發(fā)現(xiàn)有數(shù)據(jù)了,原來name屬性很有用,; 對與多選和單選,,選擇默認(rèn)的值是“on” 服務(wù)器端接受到的數(shù)據(jù),選擇的默認(rèn)值都是“on”
對與多選和單選,,我將name屬性改為一致,,分組,觀察一下
<% using (Html.BeginForm()) { %>
<input id="Checkbox1" name="Checkbox" type="checkbox" /> <input id="Checkbox2" name="Checkbox" type="checkbox" /> <input id="Checkbox3" name="Checkbox" type="checkbox" /> <input id="Checkbox4" name="Checkbox" type="checkbox" /> <input id="Checkbox5" name="Checkbox" type="checkbox" /> <input id="Radio1" name="Radio" type="radio" /> <input id="Radio2" name="Radio" type="radio" /> <input id="Radio3" name="Radio" type="radio"/> <input id="Text1" name="Text1" type="text" /> <input id="Submit1" type="submit" value="submit" /> <%} %>
提交表單,,客戶端的變化在意料之中
服務(wù)器端,,接受到的數(shù)據(jù)已經(jīng)有了變化,多選的值用,,分割了,,但選擇的默認(rèn)值都是“on”
給單選和多選分別給定值后, 客戶端的變化
服務(wù)器端的變化,,這樣已經(jīng)可以判斷用戶的操作了
如果將id屬性去掉呢,? <% using (Html.BeginForm()) { %>
<input name="Checkbox" type="checkbox" value="1" /> <input name="Checkbox" type="checkbox" value="2" /> <input name="Checkbox" type="checkbox" value="3" /> <input name="Checkbox" type="checkbox" value="4" /> <input name="Checkbox" type="checkbox" value="5" /> <input name="Radio" type="radio" value="6" /> <input name="Radio" type="radio" value="7" /> <input name="Radio" type="radio" value="8" /> <input name="Text1" type="text" /> <input type="submit" value="submit" /> <%} %>
客戶端的變化是沒有變化
小結(jié):對與html提交表單而言,name屬性是必須的,,而id屬性是可選的 |
|