Ваш код выглядит довольно корректно, поэтому я предполагаю, что вы не передали свой флажок в form
для начала.Кроме того, вам нужно проверить это значение для null
.Если флажок установлен, значение "1"
представляется в виде строки.Если этот флажок снят, будет возвращено значение null.
Вот рабочий пример:
<h3>Submitted value: @TempData["val"]</h3>
@using (Html.BeginForm("GetCheckbox", "Home", FormMethod.Post))
{
<label class="form-check-label">
<input id="UbankInsurance" name="UbankInsurance" value="1" type="checkbox" />
Yes
</label>
<button type="submit">Submit</button>
}
Метод контроллера:
[HttpPost]
public ActionResult GetCheckbox(FormCollection form)
{
var checkboxChecked = form["UbankInsurance"]; //get the checkbox value
if(checkboxChecked == null) //if it is unchecked it will be null
{
checkboxChecked = "0"; //set it to a parsable value instead
}
//convert 0 or 1 to int and return it to view
TempData["val"] = Convert.ToInt32(checkboxChecked);
return View("Index");
}
Пожалуйста, обратите внимание, что яиспользовали HomeController в демонстрационном приложении, поэтому убедитесь, что вы указали фактические значения в терминах методов действий и имен контроллеров.