我正在尝试使用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
的数据库列
答案 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,因此请确保您按照操作方法和控制器名称填写实际值。