可以为null的bool一直被传递给控制器null,而不管值是什么



我正试图将一个可为null的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"。现在只有两个选项:null和true。但我的意图是使用可为null的bool来有三个选项:null(当用户没有触摸复选框时)、true(选中)和false(未选中)。我知道这听起来并不聪明和愚蠢,但我只是想弄清楚可为null的bool是如何工作的,以及在C#中拥有这样的东西的意图是什么(我是C#的新手)。我想知道是否可以只使用复选框而不使用下拉列表或单选按钮。

1在复选框中给定一个值

<input type="checkbox" value="True" id="ConvertibleID" name="convertible"/>

也许您可以从请求中获取它

Request.Form["convertible"]

最新更新