0
我想生產類型的複選框有Html.CheckBoxFor循環
的文章當我檢查每一個複選框(如LEVELONE)我希望看到每一個都具有唯一的ID和名稱,如下面
我有一個服務,其將被用來創建複選框
列表(ReplayService),其提供的對象(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},
};
}
我的控制器類使用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();
}
我的模型類已定義的屬性的列表(由服務創建的),以創建新的對象viewModel.HierarchyLevels(在Model)每個複選框將被創建。
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; }
.....
.....
}
在我查看我循環瀏覽HierarchyLevels列表併產生一個複選框列表。我遇到的問題是我不確定如何遍歷對象列表並在模型中分配唯一的bool屬性。在下面的代碼片段我指定布爾屬性「LEVELONE」到所有創建的複選框(結果都具有相同的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>
}