Se muestran los elementos comprobados y / o seleccionados como se comprobó en la página de edición
Así que tengo esta página donde el usuario puede seleccionar elementos para dos categorías diferentes (Casos y Partes). Cuando un usuario crea una visita (horario) que podían seleccionar el artículo o los artículos en la categoría Casos y seleccionar ciertas partes. Luego guardan la información basada en las selecciones. Cuando voy a la página de edición de este programa creado me gustaría tener marcadas las casillas de verificación para los elementos que se seleccionaron y se guardan durante la creación de la página. No estoy seguro de si me falta hasta los parámetros que se pasan alrededor o lo que necesito para mostrar los elementos seleccionados.
mi (información que contiene selecciones de ahorro) crean Obtener y Código postal
[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<VisitViewModel, VisitEntry>(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);
}
Este es mi método Editar y Publicar.
[HttpGet]
public ActionResult Edit(Guid visitEntryId)
{
VisitEntry dto = _visitEntryService.Get(visitEntryId);
if (dto == null) return View("Error");
VisitViewModel viewModel = Mapper.Map<VisitEntry, VisitViewModel>(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<VisitViewModel, VisitEntry>(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});
}
Este método carga partido Info:
IList<Party> caseParties =
_associatedCasePartyService.GetAssignedPartiesForThisAndAssociatedCases(viewModel.CaseId,
_currentUser.OfficeId);
if (caseParties != null)
viewModel.AvailableCaseParties = caseParties;
Este es mi modelo de vista:
public class VisitViewModel
{
public IEnumerable<Party> AvailableCaseParties { get; set; }
public IList<Guid> PartiesSelected { get; set; }
}
VisitForm.ascx que contienen campos de colocaciones:
<%Html.RenderPartial("Parties", Model); %>
Parties.ascx - que contiene la fila para permitir el control de la caja y cuando se hace así y vaya a editar la entrada de la página se carga con toda la información guardada, excepto las partes controladas:
<% if (Model.AvailableCaseParties != null && Model.AvailableCaseParties.Count() > 0)
{%>
<div class="row">
<fieldset>
<legend>Parties</legend>
<div>
<%=Html.Grid(Model.AvailableCaseParties).Attributes(id => "PartiesGrid").Columns(
column =>
{
column.For(party =>
string.Format("<input type='checkbox' {1} name='selectedParties' value='{0}'/>",
party.PartyId, Model.PartiesSelected != null && Model.PartiesSelected.Count(p => p == party.PartyId) > 0 ? "checked" : string.Empty)).Encode(false).Header(string.Format("<TH><input type='checkbox' name='checkSelect'/></TH>"));
column.For(party => party.FullName).Named(Kids.Resources.Entities.Party.EntityName);
}
).Empty(string.Format("No {0}", Kids.Resources.Entities.Party.EntityNamePlural))
%>
</div>
</fieldset>
</div>