asp.net-mvc - 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)
任何人都有一种简单的方法可以从复选框中始终如一地获得真假条件?
解决方案
第二个字段是隐藏字段。无论复选框是否被选中,它都会被提交。如果选中该复选框,则发布的值将为真,假。否则,发布的值将是错误的。这是设计造成的。如果你想检查复选框是真还是假,你可以这样做:
控制器:
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();
}
}
推荐阅读
- django - 'IntegerField' 对象没有属性 'value_from_datadict' 错误
- firebase - Firebase 自定义 Google 身份验证登录
- debian - prometheus:无法启动监控系统和时间序列数据库
- c# - ASP.Net MVC:如何使用 List ViewData 对象或从控制器传递到视图的其他复杂对象
- awk - AWK 搜索特定序列,如果找到则在下一行搜索另一个序列 version2
- firebase - Github Actions - 如何使我的环境变量(存储在 .env 文件中)在我的工作流程中可用
- swift - 每次属性字符串超过一定高度时都尝试创建新的 NSTextView?
- excel - 用不同颜色格式化单元格的 VBA 脚本,慢速电子表格
- fonts - FontAwesome SVG 与其图标字体不匹配,备忘单也不匹配
- sql-server - SQL Server 选择中缺少随机主键