Как установить значение по умолчанию для радио с помощью ASP. NET Core Tag Helpers - PullRequest
0 голосов
/ 24 марта 2020

public bool MyBool { get; set; }

<div class="form-group">
   <label asp-for="MyBool" class="form-check-label"></label>
   <div class="form-check my-2">
        <input asp-for="MyBool" class="form-check-input" type="radio" value="true" checked />
        <label asp-for="MyBool" class="form-check-label">Yes</label>
    </div>
    <div class="form-check my-2">
        <input asp-for="MyBool" class="form-check-input" type="radio" value="false" />
        <label asp-for="MyBool" class="form-check-label">No</label>
    </div>
    <span asp-validation-for="MyBool" class="text-danger small"></span>
</div>

Я пытаюсь установить Да (true) как проверено. Однако вместо этого всегда проверяется «Нет». Я думаю, что это может быть помощник тега, но не уверен, как изменить его так, чтобы он отображал так, как я хочу.

Использование. NET Core 3.1

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Я думаю, что это помощник тега, который вызывает проблему, которая в ретроспективе имеет смысл. Я полагаю, потому что свойство bool не имеет значения, оно по умолчанию равно false и перезаписывает тот факт, что я установил флажок Да.

Я решил это путем полного удаления флажка и инициализации вместо этого. логические значения в конструкторе ViewModel. Таким образом, помощник по тегам автоматически выбирает начальное значение.

Примерно так:

public class MyViewModel
{
    public bool MyBool { get; set; }

    public MyViewModel()
    {
        MyBool = true;
    }
}



<div class="form-group">
    <label asp-for="MyBool" class="form-check-label"></label>
    <div class="form-check my-2">
        <input asp-for="MyBool" class="form-check-input" type="radio" value="true" />
        <label asp-for="MyBool" class="form-check-label">Yes</label>
    </div>
    <div class="form-check my-2">
        <input asp-for="MyBool" class="form-check-input" type="radio" value="false" />
        <label asp-for="MyBool" class="form-check-label">No</label>
    </div>
    <span asp-validation-for="MyBool" class="text-danger small"></span>
</div>

Буду признателен за любой дополнительный ввод, если у кого-либо есть.

0 голосов
/ 24 марта 2020

Если вы хотите, чтобы пользователь мог просто выбрать один из переключателей со значением по умолчанию (отмечен), используйте код, подобный этому:

<div class="form-group">
<label class="form-check-label"></label>
<div class="form-check my-2">
  <input asp-for="MyBool" class="form-check-input" checked="checked" name="MyBool" type="radio" />
  <label asp-for="MyBool" class="form-check-label">Yes</label>
</div>
<div class="form-check my-2">
  <input asp-for="MyBool" class="form-check-input" name="MyBool" type="radio" />
  <label asp-for="MyBool" class="form-check-label">No</label>
</div>
</div>

Но лучше использовать флажок:

<input asp-for="MyBool" class="form-check-input" type="checkbox" checked="checked">
<label asp-for="MyBool" class="form-check-label">Yes or No</label>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...