Dlaczego ASP.NET MVC Html.CheckBox wysyła dwa WEJŚCIA o tej samej nazwie?
Dlaczego na świecie działa linia:
<%= Html.CheckBox("ForSale", Model.Product.ForSale)%> For Sale
skutkuje następującym kodem HTML:
<input id="ForSale" name="ForSale" type="checkbox" value="true" />
<input name="ForSale" type="hidden" value="false" />
For Sale
Teraz, gdy sprawdzam pole i dostępRequest.Form["ForSale"]
, Dostaję śmieszną odpowiedź"true,false"
. Czy mam to przeanalizować?
To ukryte pole nie pojawia się dla innych formantów HtmlHelper, więc dlaczego robi to dla CheckBox?
Jak wyłączyć tę głupią „funkcję”? Albo zrobiłHtmlHelper
po prostu przerasta jego użyteczność?
Aktualizacja
Z odpowiedzi poniżej wynika, że kryje się za tym jakaś logika. Przygotowałem małą metodę rozszerzenia, więc nie muszę o tym myśleć (dzięki @ eu-ge-ne):
public static bool GetCheckBoxValue(this System.Web.HttpRequestBase req,
string name) {
return Convert.ToBoolean(req.Form.GetValues(name).First());
}