Я использую Html.CheckBox()
. Полученный HTML-код:
<input id="IsMultiGraph" name="IsMultiGraph" value="true" type="checkbox">
<input name="IsMultiGraph" value="false" type="hidden">
На сервере у меня есть действие, которое принимает информацию о публикации формы и использует собственный IModelBinder для привязки результатов формы к одной из моих моделей. Вот фрагмент кода, который я запускаю в IModelBinder:
bool isMultiGraph;
if (!bool.TryParse(bindingContext.HttpContext.Request["IsMultiGraph"], out isMultiGraph))
bindingContext.ModelState.AddModelError("IsMultiGraph", "Invalid boolean for \"IsMultiGraph\""); //this should not ever happen unless someone is programatically posting
result.IsMultiGraph = isMultiGraph;
Проблема в том, что, поскольку Html.CheckBox()
отображает флажок, а также скрытое поле ввода, если я изменяю состояние текстового поля, значение обратной передачи удваивается (т. Е. "True, false").
Я понимаю, почему это делается, и я ищу лучший способ проанализировать текущее значение CheckBox во время обратной передачи (check = true, unchecked = false). Есть ли в MVC другой вспомогательный метод для этого или я должен написать свой собственный?