ASP.NET CORE Checkbox如何检查是否为真?

ASP.NET CORE Checkbox how to check for true?

当结果为 {false}(未选中)和 {true,false}(已选中)时,如何检查复选框值是否为真? 当我将 value="yes" 添加到助手时,我得到 {yes,false} 进行检查。 {侧边栏:Microsoft 有什么问题他们无法解决这个问题?}

{版本:netcoreapp3.1,Microsoft.EntityFrameworkCore3.1.5,Microsoft.VisualStudio.Web.CodeGeneration.Design3.1.3,VS Enterprise 2019 16.6.3}

查看:

<div class="form-group form-check">
<label class="form-check-label">
    <input class="form-check-input" asp-for="MyBoolValue" /> @Html.DisplayNameFor(model => model.MyBoolValue)
</label>
</div>

控制器:(带有 IFormCollection 表单)

if(form["MyBoolValue"].ToString() != "") // Does not work when the value is {false} not checked
{
    DbTable.MyBoolValue = true;
}
else
{
    DbTable.MyBoolValue = false;
}

我试过很多组合,例如:

if(Convert.ToBoolean(form["MyBoolValue"]) == true)

有人有简单的方法可以从复选框中始终如一地获得真假条件吗?

第二个字段是隐藏字段。无论复选框是否被选中,它都会被提交。如果选中该复选框,则发布的值将为 true、false。否则,张贴值将 false.It 是由设计引起的。 如果你想检查复选框是真还是假,你可以这样做:

控制器:

 public IActionResult Test(IFormCollection form) {
            string[] str = form["MyBoolValue"].ToArray();
            //the first solution
            if (str.Length > 1)
            {
                //MyBoolValue is true
            }
            else {
                //MyBoolValue is false
            }
            //the second solution
            if (str[0].Equals("true"))
            {
                //MyBoolValue is true
            }
            else
            {
                //MyBoolValue is false
            }
            return View();
        }
    }