Double CheckBox Создание ошибки? - PullRequest
       4

Double CheckBox Создание ошибки?

0 голосов
/ 10 декабря 2011

У меня есть foreach, который заполняет таблицу, и одно поле таблиц строк:

<% foreach (var item in Model.List){%>
   <td align="center">
      <%: Html.CheckBox(item.ID.ToString(),item.isChecked)%>
  </td>
<%}%>

Внутри моей почтовой функции я пытался получить Request.Form ["45"] (45 - это идентификатор образца) и увидел, что получено значение "true, false".

Взглянув на сгенерированный код, я только что увидел:

<input name="45" type="checkbox" value="true" /><input name="45" type="hidden" value="false" />

Как это возможно, поскольку я просто прошу сгенерировать один вход? Я тоже не знаю, лучше ли использовать Html.CheckBoxFor в этом случае

Спасибо!

1 Ответ

3 голосов
/ 10 декабря 2011

Вы можете прочитать объяснение здесь

тот же подход, который используют как Ruby on Rails, так и MonoRail.

Когда вы отправляете форму с флажкомзначение публикуется, только если установлен флажок.Таким образом, если вы оставите флажок снятым, то на сервер ничего не будет отправлено, когда во многих ситуациях вы хотите, чтобы вместо этого отправлялось false.Поскольку скрытый ввод имеет то же имя, что и флажок, то, если флажок снят, вы все равно получите «ложь», отправленную на сервер.Когда флажок установлен, ModelBinder автоматически позаботится об извлечении 'true' из 'true, false'

Почему вы не используете модель, чтобы модель позаботилась об этом.Использование объекта запроса не рекомендуется в asp.net-mvc. Вы также можете использовать параметр formcollection в вашем actionresult и обработать этот сценарий, используя этот подход.

Вы всегда можете использовать HTML-теги, если помощники не соответствуют вашим требованиям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...