2011-01-04 4 views
3

Mögliche Duplizieren:
asp.net mvc: why is Html.CheckBox generating an additional hidden inputWarum hat eine Checkbox auch ein verstecktes Tag?

Ich bin ein Kontrollkästchen in einer asp.net Mvc app-Rendering, und die Steuerung wird auch ein verstecktes Feld wie folgt ausgibt:

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

Problem ist, wenn ich das Formular post, der Formularschlüssel "blah-64 zurück" an, aus ".

Warum ist das?

Antwort

8

Wenn Sie sich den Quellcode für den Checkbox-Helfer ansehen, sehen Sie einen Kommentar, der ihn erklärt. Es sieht wie folgt aus: „Checkbox Kontrollen erfolgreich werden können‚

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, die W3C specification sagt:‘Wenn ein Formular abgeschickt wird, nur“ auf (Erfolgreich ist ihre Bezeichnung für den eingereichten Wert). Das ausgeblendete Feld stellt sicher, dass sie gesendet werden, unabhängig davon, ob sie aktiviert sind oder nicht. Wenn Sie dieses Verhalten nicht möchten, besteht der einfachste Weg darin, den HTML-Code selbst zu rendern und keinen Helfer zu verwenden.

+1

Aber welchen Wert nehme ich? Wenn ich es überprüfe, bekomme ich "on, off" ?? – Blankman

Verwandte Themen