Perché nel mondo fa la linea:Perché ASP.NET MVC Html.CheckBox emette due INPUT con lo stesso nome?
<%= Html.CheckBox("ForSale", Model.Product.ForSale)%> For Sale
risultato nella seguente codice HTML:
<input id="ForSale" name="ForSale" type="checkbox" value="true" />
<input name="ForSale" type="hidden" value="false" />
For Sale
Ora ogni volta che selezionare la casella e accesso Request.Form["ForSale"]
, ottengo la risposta ridicola di "true,false"
. Dovrei analizzarlo?
Questo campo nascosto non viene visualizzato per gli altri controlli HtmlHelper, quindi perché lo fa per CheckBox?
Come disattivare questa "funzione" stupida? Oppure il HtmlHelper
ha perso la sua utilità?
Aggiornamento
Dalla risposta qui sotto, sembra che ci sia una logica dietro questo. Ho preparato un po 'di metodo di estensione in modo da non devo pensarci (grazie a @ eu-ge-ne):
public static bool GetCheckBoxValue(this System.Web.HttpRequestBase req,
string name) {
return Convert.ToBoolean(req.Form.GetValues(name).First());
}
Se stai usando Request.Form, probabilmente stai sbagliando. –
+1 - Mi sono imbattuto in questo problema anche l'altro giorno. Sembra che stessero cercando di essere d'aiuto, ma sono finiti per annoiare quelli di noi che sanno come funzionano le checkbox. –
@mgroves mente inviando una risposta per farmi sapere cosa sto facendo probabilmente sto sbagliando? –