我正试图将可空的bool传递给我的控制器。但是当我将bool值从我的视图传递给控制器时,无论它在我的视图中有什么值,它都会一直传递null。
以下是我的观点:
@model Cars.Models.Car
@using (Html.BeginForm("Index", "Home", FormMethod.Post,
new { id = "CategoryFormID"})) {
<label>Convertible:</label>
<input type="checkbox" id="ConvertibleID" name="convertible"/>
<button type="submit" name="submit" value="search" id="SubmitID">Search</button>
}
我的控制员:
[HttpPost]
public ActionResult Index(bool? convertible){
var cars = from d in db.Car
select d;
if (convertible.HasValue)
{
cars = cars.Where(x => x.Convertible == convertible);
}
return View("SearchResult", cars);
}
我还有其他字段,例如下拉列表和文本字段,但它们完美无缺。任何帮助都会非常感激。
更新: 谢谢你的快速回应。但是,我确实尝试给它一个值=“True”,就像你们建议的那样。现在只有2个选项:null和true。但我的意图是使用可空的bool有三个选项:null(当用户没有触摸复选框时),true(选中)和false(未选中)。我知道这听起来并不聪明和愚蠢,但我只想弄清楚可空的bool是如何工作的,以及在C#中有这样的东西是什么意思(我是C#的新手)。 我想知道是否有可能只使用复选框而不使用下拉列表或单选按钮。
答案 0 :(得分:0)
1在复选框中提供一个值
<input type="checkbox" value="True" id="ConvertibleID" name="convertible"/>
答案 1 :(得分:0)
也许你可以从请求中获取它
Request.Form["convertible"]