これは、各州のチェックボックスを使用して州の固定リストを表示するための私のエディター テンプレートです。
@model Comair.RI.UI.Models.ApplicantRelocateProvinceList
<table>
<tr>
<th style="display: none;"></th>
<th>
@Html.DisplayNameFor(model => model.HeaderItem.Province)
</th>
<th>
@Html.DisplayNameFor(model => model.HeaderItem.WillRelocate)
</th>
</tr>
@foreach (var item in Model.Items)
{
@Html.EditorFor(m => item)
}
</table>
これはModel.Items
型モデルのエディター テンプレートです。
@model Comair.RI.UI.Models.ApplicantRelocateProvinceItem
<tr>
<td style="display: none;">
@Html.HiddenFor(m => m.Id)
</td>
<td>
@Html.DisplayFor(m => m.Province.Name)
</td>
<td>
@Html.EditorFor(m => m.WillRelocate)
</td>
</tr>
私はこのモデルを他のビューモデルにうまく使用しました。ApplicantRelocateProvinceList
モデルは次のとおりです。
public class ApplicantRelocateProvinceList : ViewModel
{
public ApplicantRelocateProvinceItem HeaderItem { get; set; }
public ApplicantRelocateProvinceList()
{
HeaderItem = new ApplicantRelocateProvinceItem();
}
public void MapFromEntityList(IEnumerable<ApplicantRelocateProvince> applicantProvinces)
{
var service = new ProvinceService(DbContext);
var selectedIds = applicantProvinces.Select(ap => ap.ProvinceId);
Items = service.ReadProvinces()
.Where(i => !i.IsDeleted)
.Select(p => new ApplicantRelocateProvinceItem {Id = p.Id, Province = p, WillRelocate = selectedIds.Contains(p.Id)});
}
public IEnumerable<ApplicantRelocateProvinceItem> Items { get; set; }
}
このコードは、9 つの州の固定リストと、申請者が選択した州の可変リストを読み取ります。ID が申請者の州にある固定州の州は、WillRelocate
フラグが true でマークされ、そのチェックボックスがオンになっていることを示します。