从asp.net MVC中的复选框值获取0

时间:2018-12-15 08:41:08

标签: c# asp.net asp.net-mvc

我正在尝试使用FormCollection从复选框中获取值(1或0)。但是,即使我选中它,在调试器模式下我也得到0。

这里是复选框。

<label class="form-check-label">
     <input id="UbankInsurance" name="UbankInsurance" value="1" type="checkbox"/> Yes
</label>

这是收集它的方法。

[HttpPost]
public ActionResult Edit(FormCollection fc)
{
   int ublInsurance = Convert.ToInt32(fc["UbankInsurance"]);
}

进一步,即时消息会将这个值传递给数据类型为bit的数据库列

1 个答案:

答案 0 :(得分:0)

您的代码看起来相当正确,所以我想您没有在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,因此请确保您按照操作方法和控制器名称填写实际值。