首页 > 解决方案 > ASP.NET CORE Checkbox 如何检查是否为真?

问题描述

当结果为 {false} 未选中且 {true,false} 已选中时,如何检查复选框值是否为真?当我向助手添加 value="yes" 时,我得到 {yes,false} 以进行检查。{边栏:微软出了什么问题,他们无法做到这一点?}

{版本:netcoreapp3.1、Microsoft.EntityFrameworkCore 3.1.5、Microsoft.VisualStudio.Web.CodeGeneration.Design 3.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)

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

标签: asp.net-mvcasp.net-corehtml-helpernetcoreapp3.1

解决方案


在此处输入图像描述

第二个字段是隐藏字段。无论复选框是否被选中,它都会被提交。如果选中该复选框,则发布的值将为真,假。否则,发布的值将是错误的。这是设计造成的。如果你想检查复选框是真还是假,你可以这样做:

控制器:

 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();
        }
    }

推荐阅读