null許容ブール値をコントローラーに渡そうとしています。しかし、ビューからコントローラーに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"を与えてみました。現在、nullとtrueの2つのオプションしかありません。しかし、私の意図は、null可能なboolを使用して、null(ユーザーがチェックボックスに触れていない場合)、true(チェックされている)、false(チェックされていない)の3つのオプションを持つことです。私はそれが賢くてばかげているように聞こえないことを知っていますが、私はnull許容ブールがどのように機能しているか、そしてC#でそのようなものを持つ意図は何であるかを理解しようとしています(私はC#の初心者です)。チェックボックスだけで、ドロップダウンリストやラジオボタンを使用せずにこれを行うことができるかどうか疑問に思いました。