2012-04-18 10 views
1

ASP.Net MVC 3 Webアプリケーションを開発中で、コントローラのHttpPostメソッド内で選択したチェックボックスの値を取得するのが困難です。うまくいけば誰かが助けることができる。ASP.Net MVC 3 CheckBoxListの値を取得する

私は私は2つの見出しの下のチェックボックス、医療および外科手術

<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) 
} 

} 
を作成する2つのviewmodels私の見解ではEditorTemplate

@model Locum.UI.ViewModels.ViewModelCheckBox 

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

として

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; } 
} 

そして、私が使用して部分的なビューを持っています

そして私のHttpPostコントローラでは、選択したチェックボックスの値を取得しようとしますが、しかしmode.SpecialtyListは常にNullです

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

     return View(); 
    } 

誰かがなぜmodel.SpecialtyListが常にNullであるか知っていますか?

ご迷惑をおかけして申し訳ありません。

ありがとうございました。

答えて

3

は次のようにチェックボックスに同じ名前を付ける:

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

、それは、配列

+0

おかげKaraxunaを掲載します。 – tgriffiths

+0

あなたは歓迎です:) – karaxuna

関連する問題