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());
}