2012-11-21 19 views
0

我試圖將一個可空布爾值傳遞給我的控制器。但是,當我將視圖中的布爾值傳遞給控制器​​時,無論它在我的視圖中具有的值如何,它都會始終傳遞爲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#的新手)。 我想知道是否可以這樣做只是複選框,而不使用下拉列表或單選按鈕。

+0

嘗試分配屬性'值=「真」'到輸入標籤。 – Matthew

+0

這是mvc行爲,但您需要爲此實現自定義綁定。如果有些例子讓你開心,請打電話給我。 – pylover

+0

例子會非常棒!謝謝! – moamzia

回答

0

1在您的複選框給出一個值

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

試過了,它在我檢查時正常工作,但是當我取消選中複選框時,它將值作爲空值傳遞。那麼沒有辦法有三個值呢?如果沒有,那麼可空的布爾值有什麼意義呢?謝謝。 – moamzia

+0

重點在於您使用的複選框複選框只有兩個選項,它在選中時爲true或在非cheked時爲null/false –

0

也許你可以把它從請求

Request.Form["convertible"]