Флажок Razor не привязан к модели

#c# #asp.net-mvc #asp.net-mvc-4 #checkbox

#c# #asp.net-mvc #asp.net-mvc-4 #флажок

Вопрос:

Я asp.net новичок в mvc. У меня есть флажок в моей форме

 @Html.CheckBox("Don't show my number", Model.IsPhonePublic)
 

Но независимо от того, устанавливаю ли я флажок или нет Model.IsPhonePublic , всегда false при отправке формы. Любые указатели

Комментарии:

1. @Html. Флажок (модель. IsPhonePublic), затем отдельная метка

2. Разве метка не должна быть «Показать мой номер»? или вы всегда используете противоположное логическое значение? 🙂

3. Недавно я обнаружил, что если у вас есть другая ссылка на то же свойство модели, например @Html . HiddenFor(m => m.IsPhonePublic) в той же форме, что и у вас @Html. CheckBoxFor(m => m.IsPhonePublic), тогда контроллер может не получить ожидаемое значение. Просто что-то, с чем можно разобраться, если вы не можете найти, почему значение неверно, когда вы находитесь в точке останова в вашем контроллере! Кроме того, я не знаю, относится ли это к ядру или нет.

Ответ №1:

Вы неправильно используете помощник, смотрите Определение здесь :

Итак, вы делаете это:

 @Html.Label("Don't show my number") 
@Html.CheckBox("IsPhonePublic", Model.IsPhonePublic)
 

или

 @Html.Label("Don't show my number") 
@Html.CheckBoxFor(m => m.IsPhonePublic)
 

или третье и чистое решение:

 @Html.LabelFor(m => m.IsPhonePublic) 
@Html.CheckBoxFor(m => m.IsPhonePublic)
 

И в вашем определении модели:

 [DisplayName("Don't show my number")]
public bool IsPhonePublic { get; set; }
 

Ответ №2:

  @Html.EditorFor(model => model.IsPhonePublic)
 @Html.Label('Don't Show my number.')