Asp.net-Mvc-3
將復選框綁定到 MVC 中的 int 數組/可枚舉
@Html.CheckBox("orderNumbers", new { value = 1 }) @Html.CheckBox("orderNumbers", new { value = 2 }) @Html.CheckBox("orderNumbers", new { value = 3 }) @Html.CheckBox("orderNumbers", new { value = 4 }) @Html.CheckBox("orderNumbers", new { value = 5 }) [HttpPost] public ActionResult MarkAsCompleted(IEnumerable<int> orderNumbers) { } [HttpPost] public ActionResult MarkAsCompleted(IEnumerable<string> orderNumbers) { }如果我在我的操作方法中使用第一個簽名,我會得到一個空的
IEnumerable.如果我使用第二個簽名,我確實收到了值,但我也收到了未選中值的錯誤值(因為 MVC 模式使用隱藏欄位隱藏所有復選框)。
例如,我會收到類似的東西
orderNumbers = { "1", "2", "false", "4", "false" }為什麼我不能只獲取數字列表?
因為這就是提供的
CheckBoxFor助手的工作方式。您必須自己為複選框生成 html。然後不會生成隱藏的輸入,您將只獲得選定的整數值。
您可以通過以下方式獲取所有檢查值。
控制器程式碼:
public ActionResult Index() { return View(); } [AcceptVerbs(HttpVerbs.Post)] public ActionResult Index(string[] orderNumbers) { return View(); }查看程式碼:
@using (Html.BeginForm()) { <input name="orderNumbers" type="checkbox" value="1" /> <input name="orderNumbers" type="checkbox" value="2" /> <input name="orderNumbers" type="checkbox" value="3" /> <input name="orderNumbers" type="checkbox" value="4" /> <input name="orderNumbers" type="checkbox" value="5" /> <input type="submit" name="temp" value="hi" /> }請記住一件事,您需要為所有復選框提供相同的名稱。在數組中,您將獲得所有選中復選框的值。