Почему CheckBoxFor представляет дополнительный входной тег, и как я могу получить значение с помощью FormCollection?

В моем приложении 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, кажется, присоединяется к этим двум значениям, так как у них есть то же имя.

Какие-либо идеи?

128
задан TylerH 24 April 2015 в 21:44
поделиться

1 ответ

Взгляните здесь:

http://forums.asp.net/t/1314753.aspx

Это не ошибка, и фактически используется тот же подход. что оба Руби на Использование Rails и MonoRail.

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

Когда этот флажок установлен, ModelBinder автоматически принимает забота об извлечении «истинного» из «истинного, ложного»

169
ответ дан 24 November 2019 в 00:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: