ASP. NET CORE Checkbox как проверить на истинность? - PullRequest
1 голос
/ 08 июля 2020

Как мне проверить, истинно ли значение флажка, если результат либо {false} для не проверенного, либо {true, false} для проверенного? Когда я добавляю к помощнику value = "yes", я получаю {yes, false} для проверки. {Боковая панель: Что такого плохого в Microsoft, что они не могут понять это правильно?}

{Версии: 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)

У кого-нибудь есть простой способ постоянно получать истинно ложное условие с помощью флажка?

1 Ответ

1 голос
/ 09 июля 2020

введите описание изображения здесь

Второе поле - скрытое. Он будет отправлен независимо от того, установлен ли флажок. Если флажок установлен, опубликованное значение будет истинным, ложным. В противном случае опубликованное значение будет ложным - это вызвано дизайном. Если вы хотите проверить, является ли флажок истинным или ложным, вы можете сделать это так:

Контроллер:

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