2012-04-18 85 views
1

我正在開發一個ASP.Net MVC 3 Web應用程序,我很難檢索我的控制器中的HttpPost方法中選定的複選框值。希望有人能幫助。ASP.Net MVC 3檢索CheckBoxList值

我有2周的ViewModels

public class ViewModelShiftSubSpecialties 
{ 
    public IEnumerable<ViewModelCheckBox> SpecialtyList { get; set; } 
} 

public class ViewModelCheckBox 
{ 
    public string Id { get; set; } 
    public string Name { get; set; } 
    public bool Checked { get; set; } 
    public string Specialty { get; set; } 
} 

和部分查看我作爲一個EditorTemplate

@model Locum.UI.ViewModels.ViewModelCheckBox 

@Html.HiddenFor(x => x.Id)   
@Html.CheckBoxFor(x => x.Checked) 
@Html.LabelFor(x => x.Name, Model.Name)<br /> 

在我看來,我下創建兩個標題複選框使用,醫學和外科手術

<h3>Medicine</h3> 
foreach (var sub in Model.SpecialtyList) 
{ 
if (sub.Specialty.Equals("Medicine")) 
{ 
    @Html.EditorFor(m => sub) 
} 
} 
<h3>Surgery</h3> 

foreach (var sub in Model.SpecialtyList) 
{ 
if (sub.Specialty.Equals("Surgery")) 
{ 
    @Html.EditorFor(m => sub) 
} 

} 

然後在我的HttpPost控制器中,我嘗試獲取所選複選框的值,但mode.SpecialtyList始終爲空

[HttpPost] 
    public ActionResult AssignSubSpecialties(ViewModelShiftSubSpecialties model) 
    { 
     foreach (var item in model.SpecialtyList) 
     { 
      if (item.Checked) 
      { 
       //do some logic 
      } 
     } 

     return View(); 
    } 

有誰知道爲什麼model.SpecialtyList總是爲空?

任何幫助,非常感謝。

謝謝。

回答

3

給複選框相同的名字,如:

<input type="checkbox" name="ViewModelShiftSubSpecialties.SpecialtyList" .../> 

,它會發佈一個陣列

+0

感謝Karaxuna。 – tgriffiths 2012-04-19 09:43:16

+0

歡迎您:) – karaxuna 2012-04-20 05:57:45