En HTML, cada elemento <input />
está asociado a un único nombre y par de valores. Este par se envía en la solicitud posterior (en este caso, un cuerpo de solicitud POST) solo si el <input />
es "exitoso".
Así que si usted tiene estas entradas en su <form>
DOM:
<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" />
generará los siguientes pares de nombres + de valor que se someterán al servidor:
one=foo
three=first
three=second
five=baz
eight=grault
Tenga en cuenta que:
two
y six
se excluyeron porque tenían el disabled
conjunto de atributos.
three
se envió dos veces porque tenía dos entradas válidas con el mismo nombre.
four
no se envió porque es un checkbox
que no era checked
six
no fue enviado a pesar de ser checked
porque el atributo disabled
tiene una prioridad más alta.
seven
no tiene un atributo name=""
enviado, por lo que no se envía.
Con respecto a su pregunta: puede ver que una casilla que no está marcada no tendrá su par de nombre + valor enviado al servidor, pero otras entradas que comparten el mismo nombre se enviarán con él.
Marcos como el trabajo de ASP.NET MVC alrededor de esto (a escondidas) emparejando cada checkbox
de entrada con una entrada de hidden
en el HTML representado, así:
@Html.CheckBoxFor(m => m.SomeBooleanProperty)
Renders:
<input type="checkbox" name="SomeBooleanProperty" value="true" />
<input type="hidden" name="SomeBooleanProperty" value="false" />
Si el usuario no marca la casilla, luego se enviará al servidor:
SomeBooleanProperty=false
Si el usuario selecciona la casilla, luego ambos se enviarán:
SomeBooleanProperty=true
SomeBooleanProperty=false
Sin embargo, el servidor ignorará la versión =false
porque ve la versión =true
, y por lo que si no ve =true
se puede determinar que la casilla de verificación se procesó y el usuario no la verificó, a diferencia de las entradas SomeBooleanProperty
que no se procesaron.
Se 'input type = "checkbox"/>'; 'input type =" checkbox "/>' no funcionará. –
SO está cambiando automáticamente '" ... "' a '" ... "'. En las preguntas, el título es '" ... "'. – Legionar