Да, это правильно.
Семантика флажка немного отличается от того, что вы думаете; вместо публикации значения, указывающего его отмеченное / непроверенное состояние, отмеченный флажок публикует все, что находится в его атрибуте «значение», а непроверенный флажок ничего не публикует.
Поскольку есть также скрытое поле с тем же именем, если вы отлаживаете отправку формы, вы обнаружите, что флажок имеет значение «true, false», в то время как непроверенный блок имеет значение «false»
Вы можете определить, если флажок установлен, проверяя, содержит ли он значение true.
public ActionResult(FormCollection form)
{
bool checked = form["checkbox_id"].ToString().Contains('true');
}