обработчик страниц razor с логическим флажком не связывает

У меня есть форма с несколькими входами. Я отправляю форму через ajax с помощью JQuery form.serialize(). На вкладке сети показано, что данные отправлены успешно (welcomesCritiques: on, complete: on).

На стороне сервера я улавливаю эти входные данные в пользовательском обработчике.

public async Task<IActionResult> OnPostLoadBooksAsync(string search, bool welcomesCritiques, bool complete, int startIndex, int amount)

Строка и вставки связываются отлично. Но булы всегда ложны. Когда я заменяю bools строкой, я получаю "on".

Это известная проблема? Как сделать так, чтобы on стало логическим значением?

Спасибо за вашу помощь!


person Doidel    schedule 24.01.2019    source источник


Ответы (1)


Для привязки к логическому типу вам необходимо установить значение «true», а не значение по умолчанию, которое «включено»:

<input type="checkbox" name="welcomesCritiques" value="true" />

Значение будет отправлено только в том случае, если флажок установлен. Если для параметра обработчика не указано значение, по умолчанию будет false.

Дополнительные сведения о флажках в формах Razor см. Здесь: https://www.learnrazorpages.com/razor-pages/forms/checkboxes

person Mike Brind    schedule 24.01.2019
comment
О, я понимаю, как странно. Я действительно посетил этот веб-сайт, но не осознавал, что должен, например, используйте скрытое поле с true / false с флажком. Дело закрыто, большое спасибо! - person Doidel; 24.01.2019
comment
@Doidel Скрытое поле создается помощником тега. Если вы не используете помощник тега, вам не нужно включать скрытое поле. - person Mike Brind; 24.01.2019
comment
Но каким-то образом мне придется сопоставить ввод с истиной / ложью, иначе обработчик не проанализирует его, верно? Не обязательно со скрытым полем, но мне как-то придется это сделать. Или, в качестве альтернативы, принять мои bools как строки в обработчике и преобразовать On самостоятельно. - person Doidel; 24.01.2019
comment
@Doidel Нет - вы предварительно установили атрибут value на true. См. Отредактированный ответ - person Mike Brind; 24.01.2019
comment
Аааа понял, спасибо за разъяснения! Работает как шарм, очень ценится! - person Doidel; 24.01.2019