Warum gibt ASP.NET MVC Html.CheckBox zwei EINGABEN mit demselben Namen aus?

Warum in aller Welt macht die Linie:

<%= Html.CheckBox("ForSale", Model.Product.ForSale)%> For Sale

Ergebnis im folgenden HTML:

<input id="ForSale" name="ForSale" type="checkbox" value="true" />
<input name="ForSale" type="hidden" value="false" />
For Sale

Nun, wann immer ich das Kästchen ankreuze und darauf zugreifeRequest.Form["ForSale"]Ich bekomme die lächerliche Antwort von"true,false". Soll ich das analysieren?

Dieses ausgeblendete Feld wird für die anderen HtmlHelper-Steuerelemente nicht angezeigt. Warum also für CheckBox?

Wie schalte ich dieses blöde "Feature" aus? Oder tat dasHtmlHelper einfach über seinen Nutzen hinauswachsen?

Aktualisieren

Aus der Antwort unten geht hervor, dass dahinter eine Logik steckt. Ich habe eine kleine Erweiterungsmethode vorbereitet, damit ich nicht darüber nachdenken muss (danke an @ eu-ge-ne):

    public static bool GetCheckBoxValue(this System.Web.HttpRequestBase req, 
                                        string name) {
        return Convert.ToBoolean(req.Form.GetValues(name).First());
    }

Antworten auf die Frage(7)

Ihre Antwort auf die Frage