无论值是多少,nullable bool都会一直传递给控制器​​null

时间:2012-11-21 02:52:39

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

我正试图将可空的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#的新手)。 我想知道是否有可能只使用复选框而不使用下拉列表或单选按钮。

2 个答案:

答案 0 :(得分:0)

1在复选框中提供一个值

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

答案 1 :(得分:0)

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

Request.Form["convertible"]