Три значения флажок Razor MVC C # - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть модель, которую я привязываю к представлению, которая отлично работает для всех членов моей модели, кроме bool?members.

На мой взгляд, это в основном всплывающее окно поискового фильтра, где пользователи могут выбрать фильтрацию наших записей по:

  • Имеет телефон (они установят флажок в true)
  • Нет телефона (они оставят флажок снятым)
  • Неважно, есть ли он или нет (поэтому для этого нужен третий вариант)

Технически член bool моей модели будет иметь true, false или null

В моем коде, если пользователь не установил флажок, по умолчанию он установлен на false, если они отметят флажок, тогда он установлен на true

Как я могу решить эту проблему?

@Html.LabelFor(m => m.hasphone, "Has Phone ", new { @class = "control-label" }) @Html.CheckBoxFor(m => hasphone, new { htmlAttributes = new { @class = "form-control", value = Model.id, @checked = false } })

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Это потому, что флажок или radioButton в этом отношении имеют только два состояния: проверено или не отмечено.

в вашем описании кажется, что у вас нет телефона или не имеет значения, оставьте флажок не отмеченным, так зачем вам третий вариант?

Если вы действительно хотите 3 варианта, используйте набор из трех переключателей, по одному для каждого варианта, или раскрывающийся список.

0 голосов
/ 02 апреля 2019

Я наконец понял, как это сделать в Razor, на случай, если кто-нибудь застрянет

@Html.LabelFor(m => m.hasphone, "Has Phone ", new { @class = "control-label" })
<fieldset id="hasphone">
     <label><input type="radio" name="hasphone" class="form-control" value="true" />Yes</label>
     <label><input type="radio" name="hasphone" class="form-control" value="false" />No</label>
     <label><input type="radio" name="hasphone" class="form-control" />Any</label>
</fieldset>

Идея состоит в том, чтобы создать группу, содержащую 3 параметра, присвоить вашей группе то же имя, что и имя свойства <fieldset id="hasphone">

Затем задайте для имени радиопереключателя имя группы name="hasphone", и, наконец, первая радиокнопка будет иметь значение true value="true", которое соответствует значению true члена модели, значение false соответствует false

И, наконец, не устанавливая значение 3-го переключателя, вы получаете нулевое значение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...