0

我正在尝试将一个可为空的布尔值传递给我的控制器。但是当我将 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);
}

我还有其他字段,例如下拉列表和文本字段,但它们被完美传递。任何帮助将非常感激。

更新:感谢您的快速回复。但是,我确实尝试按照你们的建议给它一个 value="True" 。现在只有 2 个选项:null 和 true。但我的意图是使用可为空的 bool 来提供三个选项:null(当用户不触摸复选框时)、true(选中)和 false(未选中)。我知道这听起来既不聪明也不愚蠢,但我只是想弄清楚可为空的 bool 是如何工作的,以及在 C# 中使用这样的东西的目的是什么(我是 C# 新手)。我想知道是否可以仅使用复选框而不使用下拉列表或单选按钮来执行此操作。

4

2 回答 2

0

1 在您的复选框中给出一个值

<input type="checkbox" value="True" id="ConvertibleID" name="convertible"/>
于 2012-11-21T02:54:40.380 回答
0

也许你可以从请求中获取

Request.Form["convertible"]
于 2012-11-21T10:57:24.613 回答