3 Stimmen

Warum hat ein Kontrollkästchen auch ein verstecktes Tag mit ihm?

重複の可能性あり。
asp.net mvc: warum erzeugt Html.CheckBox eine zusätzliche versteckte Eingabe

Ich rendere ein Kontrollkästchen in einem asp.net mvc app, und das Steuerelement ist auch ein ausgeblendetes Feld wie diese ausgibt:

<input id="blah-64" name="blah-64" value="true" type="checkbox">
<input name="blah-64" value="false" type="hidden">

Das Problem ist, dass die Formulartaste "blah-64" "on, off" zurückgibt, wenn ich das Formular abschicke.

Warum ist das so?

8voto

Dan Diplo Punkte 24765

Wenn Sie sich den Quellcode für die Checkbox-Hilfe ansehen, werden Sie einen Kommentar finden, der dies erklärt. Er sieht wie folgt aus:

if (inputType == InputType.CheckBox) { 
    // Render an additional <input type="hidden".../> for checkboxes. This 
    // addresses scenarios where unchecked checkboxes are not sent in the request. 
    // Sending a hidden input makes it possible to know that the checkbox was present 
    // on the page when the request was submitted. 
...

Dies liegt daran, dass die W3C-Spezifikation heißt es: "Wenn ein Formular abgeschickt wird, können nur "on"-Kontrollkästchen erfolgreich werden." (Erfolgreich ist der Begriff für den übermittelten Wert). Das ausgeblendete Feld sorgt dafür, dass sie übermittelt werden, unabhängig davon, ob sie markiert sind oder nicht. Wenn Sie dieses Verhalten nicht wünschen, ist es am einfachsten, den HTML-Code selbst zu rendern und keine Hilfsfunktion zu verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X