В моем приложении MVC ASP.NET я представляю флажок с помощью следующего кода:
<%= Html.CheckBoxFor(i=>i.ReceiveRSVPNotifications) %>
Теперь, я вижу, что это представляет и входной тег флажка и скрытый входной тег. Проблема, которую я имею, состоит в том, когда я пробую, получают значение от флажка с помощью FormCollection:
FormValues["ReceiveRSVPNotifications"]
Я получаю значение, "верное, ложное". При рассмотрении представленного HTML я вижу следующее:
<input id="ReceiveRSVPNotifications" name="ReceiveRSVPNotifications" value="true" type="checkbox">
<input name="ReceiveRSVPNotifications" value="false" type="hidden">
Таким образом, набор FormValues, кажется, присоединяется к этим двум значениям, так как у них есть то же имя.
Какие-либо идеи?
Взгляните здесь:
http://forums.asp.net/t/1314753.aspx
Это не ошибка, и фактически используется тот же подход. что оба Руби на Использование Rails и MonoRail.
Когда вы отправляете форму с флажком, значение публикуется только в том случае, если флажок установлен.Итак, если вы оставите флажок снятым, то ничего не будет отправлено на сервер, хотя во многих ситуациях вы бы хотите, чтобы вместо этого было отправлено false. Поскольку скрытый вход имеет то же имя в качестве флажка, то, если флажок не установлен, вы все равно получите 'false' отправлено на сервер.
Когда этот флажок установлен, ModelBinder автоматически принимает забота об извлечении «истинного» из «истинного, ложного»