Это непредвиденное поведение для CheckBox HtmlHelper? - PullRequest
2 голосов
/ 24 апреля 2009

Моя страница просмотра содержит форму поиска по примеру со следующим кодом:

<td>
<label for="HasProcessErrors">Has Errors:</label>
<%= Html.CheckBox("HasProcessErrors", crit.HasProcessErrors) %>
</td>

Свойство crit объекта HasProcessErrors является логическим значением, начальное значение которого равно false. Когда я просматриваю источник моей страницы, я вижу, что помощник сгенерировал следующий HTML:

<td>
<label for="HasProcessErrors">Has Errors:</label>
<input id="HasProcessErrors" name="HasProcessErrors" type="checkbox" value="true" /><input name="HasProcessErrors" type="hidden" value="false" />
</td>

Я неправильно использовал помощника CheckBox или происходит что-то странное? Похоже, что он должен генерировать ввод типа флажка с флажком = "".

Спасибо за любые идеи.

1 Ответ

3 голосов
/ 25 апреля 2009

Да, это правильно.

Семантика флажка немного отличается от того, что вы думаете; вместо публикации значения, указывающего его отмеченное / непроверенное состояние, отмеченный флажок публикует все, что находится в его атрибуте «значение», а непроверенный флажок ничего не публикует.

Поскольку есть также скрытое поле с тем же именем, если вы отлаживаете отправку формы, вы обнаружите, что флажок имеет значение «true, false», в то время как непроверенный блок имеет значение «false»

Вы можете определить, если флажок установлен, проверяя, содержит ли он значение true.

public ActionResult(FormCollection form)
{
   bool checked = form["checkbox_id"].ToString().Contains('true');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...