在编辑页面上显示已选中/选中的项目

所以我有这个页面,用户可以选择两个不同类别(案例和派对)的项目。 当用户创建访问(计划)时,他们可以从案例类别中选择一个或多个项目并选择某些方。 然后他们根据选择保存信息。 当我转到此创建计划的编辑页面时,我希望在创建页面中为已选择和保存的项目标记复选框。 我不确定我是否错过了传递的参数或我需要显示所选项目。

我的创建获取和发布代码(保存包含选择的信息)

[HttpGet] public ActionResult Create(Guid caseId) { var viewModel = new VisitViewModel(); SetCaseFields(caseId, viewModel); viewModel.Time = _defaultVisitTime; AddLookupsToViewModel(viewModel); return View(viewModel); } [HttpPost] public ActionResult Create(VisitViewModel viewModel, Guid[] associatedCasesSelected, Guid[] selectedParties) { if (!ModelState.IsValid) { viewModel.Time = _timeEntryHelper.Value; AddLookupsToViewModel(viewModel); return View(viewModel); } VisitEntry dto = Mapper.Map(viewModel); dto.VisitDate = _timeEntryHelper.AddTimeToDate(dto.VisitDate); dto.CasePartyIds = selectedParties; dto.Cases = associatedCasesSelected; SetCurrentUserAndOffice(dto); try { _visitEntryService.Create(dto, dto.Cases); this.FlashInfo(string.Format(Message.ConfirmationMessageCreate, Resources.Entities.Visit.EntityName)); } catch (RulesException ex) { ex.CopyTo(ModelState); } if (ModelState.IsValid) return RedirectToAction("Edit", "Case", new { caseId = viewModel.CaseId }); return View(viewModel); } 

这是我的编辑获取和发布方法。

 [HttpGet] public ActionResult Edit(Guid visitEntryId) { VisitEntry dto = _visitEntryService.Get(visitEntryId); if (dto == null) return View("Error"); VisitViewModel viewModel = Mapper.Map(dto); SetCaseFields(dto.CaseId, viewModel); AddLookupsToViewModel(viewModel); return View(viewModel);} [HttpPost] public ActionResult Edit(VisitViewModel viewModel, Guid[] associatedCasesSelected, Guid[] selectedParties) { if(!ModelState.IsValid) { viewModel.Time = _timeEntryHelper.Value; AddLookupsToViewModel(viewModel); return View(viewModel); } try { VisitEntry dto = Mapper.Map(viewModel); dto.VisitDate = _timeEntryHelper.AddTimeToDate(dto.VisitDate); dto.CasePartyIds = selectedParties; dto.Cases = associatedCasesSelected; SetCurrentUserAndOffice(dto); _visitEntryService.Update(dto, dto.Cases); } catch (RulesException ex) { ex.CopyTo(ModelState); } if (!ModelState.IsValid) { viewModel.Time = _timeEntryHelper.Value; AddLookupsToViewModel(viewModel); return View(viewModel); } this.FlashInfo(string.Format(Message.ConfirmationMessageUpdate, Kids.Resources.Entities.Visit.EntityName)); return RedirectToAction("Edit", "Case", new {caseId = viewModel.CaseId}); } 

此方法加载派对信息:

 IList caseParties = _associatedCasePartyService.GetAssignedPartiesForThisAndAssociatedCases(viewModel.CaseId, _currentUser.OfficeId); if (caseParties != null) viewModel.AvailableCaseParties = caseParties; 

这是我的viewModel:

 public class VisitViewModel { public IEnumerable AvailableCaseParties { get; set; } public IList PartiesSelected { get; set; } } 

VisitForm.ascx包含字段展示位置:

  

Parties.ascx – 其中包含允许检查框的行以及何时完成,并编辑该页面加载的条目以及除已检查方之外的所有已保存信息:

   0) {%> 
Parties
"PartiesGrid").Columns( column => { column.For(party => string.Format("", party.PartyId, Model.PartiesSelected != null && Model.PartiesSelected.Count(p => p == party.PartyId) > 0 ? "checked" : string.Empty)).Encode(false).Header(string.Format("")); column.For(party => party.FullName).Named(Kids.Resources.Entities.Party.EntityName); } ).Empty(string.Format("No {0}", Kids.Resources.Entities.Party.EntityNamePlural)) %>