【问题标题】:ASP.NET CORE Checkbox how to check for true?ASP.NET CORE Checkbox 如何检查是否为真?
【发布时间】:2020-07-08 20:51:53
【问题描述】:

当结果为 {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)

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

【问题讨论】:

  • 这可能会对你有所帮助:stackoverflow.com/questions/57079165/…
  • 这有效: DbTable.MyBoolValue = Convert.ToBoolean(form["MyBoolValue "][0]);或者这会起作用: if (form["MyBoolValue "][0].Equals("true")) {可能需要 ToString} 或 if(Convert.ToBoolean(form["MyBoolValue"][0]) == true)

标签: asp.net-mvc asp.net-core html-helper netcoreapp3.1


【解决方案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();
        }
    }

【讨论】:

  • Yiyi You - 我认为你的答案是正确的。但是,这对我有用并且看起来更简单: DbTable.MyBoolValue = Convert.ToBoolean(form["MyBoolValue "][0]);或者这会起作用: if (form["MyBoolValue "][0].Equals("true")) 或 if(Convert.ToBoolean(form["MyBoolValue"][0]) == true) 我不需要将其转换为数组,它工作正常。非常感谢!!!
猜你喜欢
  • 2011-12-04
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 2018-05-21
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多