Por que o ASP.NET MVC Html.CheckBox produz dois INPUTs com o mesmo nome?
Por que no mundo faz a linha:
<%= Html.CheckBox("ForSale", Model.Product.ForSale)%> For Sale
resultar no seguinte HTML:
<input id="ForSale" name="ForSale" type="checkbox" value="true" />
<input name="ForSale" type="hidden" value="false" />
For Sale
Agora, sempre que eu marque a caixa e acessoRequest.Form["ForSale"]
, Eu recebo a resposta ridícula de"true,false"
. Eu deveria analisar isso?
Este campo oculto não aparece para os outros controles HtmlHelper, então por que ele faz para CheckBox?
Como faço para desativar esse "recurso" estúpido? Ou oHtmlHelper
apenas superar sua utilidade?
Atualizar
Da resposta abaixo, parece que há alguma lógica por trás disso. Eu preparei um pequeno método de extensão para que eu não tenha que pensar nisso (graças a @ eu-ge-ne):
public static bool GetCheckBoxValue(this System.Web.HttpRequestBase req,
string name) {
return Convert.ToBoolean(req.Form.GetValues(name).First());
}