Dalam HTML, setiap <input />
elemen dikaitkan dengan satu pasangan nama dan nilai (tetapi tidak unik). Pasangan ini dikirim dalam permintaan berikutnya (dalam hal ini, badan permintaan POST) hanya jika <input />
"berhasil".
Jadi, jika Anda memiliki input ini di <form>
DOM Anda :
<input type="text" name="one" value="foo" />
<input type="text" name="two" value="bar" disabled="disabled" />
<input type="text" name="three" value="first" />
<input type="text" name="three" value="second" />
<input type="checkbox" name="four" value="baz" />
<input type="checkbox" name="five" value="baz" checked="checked" />
<input type="checkbox" name="six" value="qux" checked="checked" disabled="disabled" />
<input type="checkbox" name="" value="seven" checked="checked" />
<input type="radio" name="eight" value="corge" />
<input type="radio" name="eight" value="grault" checked="checked" />
<input type="radio" name="eight" value="garply" />
Akan menghasilkan pasangan nama + nilai ini yang akan dikirimkan ke server:
one=foo
three=first
three=second
five=baz
eight=grault
Perhatikan itu:
two
dan six
dikeluarkan karena mereka memiliki disabled
set atribut.
three
dikirim dua kali karena memiliki dua input yang valid dengan nama yang sama.
four
tidak dikirim karena itu adalah checkbox
yang tidakchecked
six
tidak dikirim meskipun checked
karena disabled
atribut memiliki prioritas lebih tinggi.
seven
tidak memiliki name=""
pengirimannya atribut, sehingga tidak disampaikan.
Sehubungan dengan pertanyaan Anda: Anda dapat melihat bahwa kotak centang yang tidak dicentang tidak akan mengirim pasangan nama + nilainya ke server - tetapi input lain yang memiliki nama yang sama akan dikirimkan bersamanya.
Kerangka kerja seperti ASP.NET MVC mengatasi ini dengan (diam-diam) memasangkan setiap checkbox
input dengan hidden
input dalam HTML yang diberikan, seperti:
@Html.CheckBoxFor( m => m.SomeBooleanProperty )
Memberikan:
<input type="checkbox" name="SomeBooleanProperty" value="true" />
<input type="hidden" name="SomeBooleanProperty" value="false" />
Jika pengguna tidak mencentang kotak centang, maka yang berikut akan dikirim ke server:
SomeBooleanProperty=false
Jika pengguna mencentang kotak centang, maka keduanya akan dikirim:
SomeBooleanProperty=true
SomeBooleanProperty=false
Tetapi server akan mengabaikan =false
versi karena melihat =true
versi, dan jadi jika tidak melihat =true
itu dapat menentukan bahwa kotak centang diberikan dan bahwa pengguna tidak memeriksanya - sebagai lawan dari SomeBooleanProperty
input yang tidak diberikan sama sekali.