【问题标题】:How to set default checked value for radio using ASP.NET Core Tag Helpers如何使用 ASP.NET Core Tag Helpers 为收音机设置默认选中值
【发布时间】:2020-07-05 03:04:37
【问题描述】:

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>

我正在尝试将 Yes (true) 设置为选中状态。但是,始终选中否。 我认为它可能是标签助手,但不确定如何更改它以使其呈现我想要的方式。

使用 .NET Core 3.1

【问题讨论】:

  • 对于 Create 操作,您的代码没有问题,将检查 Yes 项。但是对于 Edit 等其他操作,检查项取决于传递模型的 MyBool 值。

标签: c# html asp.net asp.net-core


【解决方案1】:

我认为这是导致问题的标签助手,事后看来确实是有道理的。我相信因为 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>

如果有人有任何进一步的意见,我将不胜感激。

【讨论】:

    【解决方案2】:

    如果您希望用户可以选择一个默认的单选按钮(选中),请使用如下代码:

    <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>

    【讨论】:

      猜你喜欢
      • 2020-10-09
      • 1970-01-01
      • 2011-06-04
      • 2016-11-17
      • 2015-05-14
      • 2020-06-14
      • 2010-10-09
      • 1970-01-01
      相关资源
      最近更新 更多