繁体   English   中英

如何使用 ASP.NET Core Tag Helpers 设置无线电的默认选中值

[英]How to set default checked value for radio using ASP.NET Core Tag Helpers

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) 设置为选中。 但是,始终选中 No。 我认为它可能是标签助手,但不确定如何更改它以使其呈现我想要的方式。

使用 .NET Core 3.1

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

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

我认为这是导致问题的标签助手,事后看来确实有意义。 我相信因为 bool 属性没有值,所以它默认为 false 并覆盖了我设置为 Yes 的事实。

我解决它的方法是完全删除检查,而不是初始化 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>

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM