Je viens de remarquer que Html.CheckBox("foo")
génère 2 entrées au lieu d'une, n'importe qui sait pourquoi?
<input id="foo" name="foo" type="checkbox" value="true" />
<input name="foo" type="hidden" value="false" />
Je viens de remarquer que Html.CheckBox("foo")
génère 2 entrées au lieu d'une, n'importe qui sait pourquoi?
<input id="foo" name="foo" type="checkbox" value="true" />
<input name="foo" type="hidden" value="false" />
Si la case n'est pas cochée, le champ de formulaire n'est pas soumis. C'est pourquoi il y a toujours la valeur false dans le champ caché. Si vous laissez la case décochée, la forme va encore avoir de la valeur du champ caché. C'est comment ASP.NET MVC poignées case à cocher valeurs.
Si vous voulez confirmer que, place une case à cocher sur le formulaire de avec Html.Caché, mais avec <input type="checkbox" name="MyTestCheckboxValue"></input>
. Laissez la case décochée, soumettez le formulaire et de le regarder posté les valeurs de demande sur le côté serveur. Vous verrez que il n'y a pas de case à cocher de la valeur. Si vous aviez champ caché, il contiendrait MyTestCheckboxValue
entrée avec false
de la valeur.
Vous pouvez écrire l'aide pour empêcher l'ajout de l'entrée masquée:
using System.Web.Mvc;
using System.Web.Mvc.Html;
public static class HelperUI
{
public static MvcHtmlString CheckBoxSimple(this HtmlHelper htmlHelper, string name, object htmlAttributes)
{
string checkBoxWithHidden = htmlHelper.CheckBox(name, htmlAttributes).ToHtmlString().Trim();
string pureCheckBox = checkBoxWithHidden.Substring(0, checkBoxWithHidden.IndexOf("<input", 1));
return new MvcHtmlString(pureCheckBox);
}
}
utilise le:
@Html.CheckBoxSimple("foo", new {value = bar.Id})
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.