2014-03-25 44 views
0

在我看來:獲取表單中複選框值的最佳方式是什麼?

<input type="checkbox" name="chb" value="True" checked="checked"> 

在我的控制器:

[HttpPost] 
public ActionResult Pesquisar(bool chb) 

的錯誤,當我沒有選中複選框:

參數字典包含參數無效項「乙肝' 類型不允許可空類型'System.Boolean'用於方法 'System.Web.Mvc.ActionResult Search(System.String,System.String,0在...

回答

0

如果使用輔助Html.CheckboxFor(X => x.chb)或Html.EditorFor(X => x.chb)生成的代碼將是

<input type="checkbox" id="chb" name="chb" value="True" /> 
<input type="hidden" value="false" name="chb" /> 

如果沒有選中複選框,則只有隱藏字段將在chb上引用模型值將設置爲false 否則如果複選框被選中,則表單提交兩個字段但MVC設置爲真值chb值

0

@Html.Checkbox("chb", ...)

,這將產生的複選框輸入以及同名的隱藏輸入布爾)」。當複選框未選中時,將使用隱藏值來避免NullReferenceException。

2

如果您將Pesquisar聲明爲可空值,會發生什麼情況?

[HttpPost] 
public ActionResult Pesquisar(bool? chbNull) { 
    var chb = chbNull ?? false; 

    // rest of routine as existing 
} 

這可能會解決您的問題,因爲它聽起來像客戶端發送空值。

相關問題