我試圖將一個可空布爾值傳遞給我的控制器。但是,當我將視圖中的布爾值傳遞給控制器時,無論它在我的視圖中具有的值如何,它都會始終傳遞爲null。可空布爾值被無時間傳遞給控制器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);
}
我也有其他領域比如下拉列表和文本字段,但他們正在通過無瑕。任何幫助將非常感激。
更新: 感謝您的快速回復。但是,我們確實嘗試給你一個值=「真」,正如你們建議的那樣。現在只有兩個選項:null和true。但我的意圖是使用可空布爾有三個選項:null(當用戶不觸及複選框時),true(選中)和false(未選中)。我知道這聽起來並不聰明和愚蠢,但我只是想弄清楚可空布爾是如何工作的,以及在C#中有這樣的事情的意圖是什麼(我是C#的新手)。 我想知道是否可以這樣做只是複選框,而不使用下拉列表或單選按鈕。
嘗試分配屬性'值=「真」'到輸入標籤。 – Matthew
這是mvc行爲,但您需要爲此實現自定義綁定。如果有些例子讓你開心,請打電話給我。 – pylover
例子會非常棒!謝謝! – moamzia