でループI iは、各チェックボックス(例えばlevelOne)を検査したとき、私はそれぞれのようなユニークなIDと名前を持つ見たいと思って入力されたチェックボックスHtml.CheckBoxFor
の下のリストを作成したいです
の下に私がチェックボックス
のリストを作成するために使用されるオブジェクト(HierarchyLevels)のリストを提供するサービス(リプレイサービス)を持っていますタイプの public IEnumerable<HierarchyLevels> GetHierarchyLevels()
{
return new List<HierarchyLevels>()
{
new HierarchyLevels{Name="LevelOne",ShortName="L1", IsSelected = false},
new HierarchyLevels{Name="LevelTwo",ShortName="L2", IsSelected = false},
new HierarchyLevels{Name="TLevelThree",ShortName="L3", IsSelected = false},
new HierarchyLevels{Name="LevelFour",ShortName="L4", IsSelected = false},
};
}
私のコントローラクラス(モデルでは)新しいオブジェクトviewModel.HierarchyLevelsを作成するために、(サービスによって作成された)HierarchyLevelsのリストを使用してIEnumerable
public ActionResult Index()
{
var vm = new MyViewModel();
PopulateViewModel(vm.viewModel);
return View(viewModel);
}
private void PopulateViewModel(ContentReplayViewModelBase viewModel)
{
var hierarchyLevels = replayService.GetHierarchyLevels();
viewModel.HierarchyLevels = hierarchyLevels.Select(h => new SelectListItem {Text = h.Name, Selected = h.IsSelected}).ToArray();
}
私のモデルクラスはのプロパティを定義していますそれぞれのチェックボックスが作成されます。
public abstract class ReplayViewModelBase
{
public IEnumerable<SelectListItem> HierarchyLevels { get; set; }
....
....
}
public class ReplayByHierarchyLevels : ReplayViewModelBase
{
public bool levelOne { get; set; }
public bool leveltwo { get; set; }
public bool levelThree { get; set; }
public bool levelFour { get; set; }
.....
.....
}
私のView iでは、HierarchyLevelsのリストをループし、チェックボックスのリストを生成します。私が抱えている問題は、オブジェクトのリストをどのようにループしてモデルに一意のboolプロパティを割り当てるかわからないということです。私はすべての作成チェックボックス(結果として、すべてが同じIDと名前を持っている)
@foreach (var level in Model.ReplayByHierarchyLevels.HierarchyLevels)
{
<tr>
<td>@level.Text</td>
<td>@Html.CheckBox(level.Text, level.Selected)</td>
<td>** @Html.CheckBoxFor(x => x.ReplayByHierarchyLevels.levelOne, Model.ReplayByHierarchyLevels.levelOne = level.Selected)</td>
</tr>
}