Exibir itens na caixa de listagem suspensa
-
12-12-2019 - |
Pergunta
Eu estou tentando exibir uma lista suspensa de caixa de uma lista de "visitas agendadas", baseado em entradas anteriores.Eu sou capaz de reunir as informações, mas quando eu apresentar a caixa de listagem suspensa se transforma em uma caixa de entrada e não de minhas informações que eu quero que estão sendo exibidos.O formato em que eu gostaria que minha itens a serem exibidos é por :10/2/2012 - Na Escola.
Aqui está o que eu tenho para o meu código:
Este é o lugar onde eu reunir as informações da visita - a data e o local
public JsonResult GetVisitDetails(Guid visitEntryId)
{
var model = new VisitDetailModel();
VisitEntry visitEntry = _visitEntryService.Get(visitEntryId);
if(visitEntry == null)
{
model.Message = string.Format(Message.NotFoundMessage, Resources.Entities.Visit.EntityName);
return Json(model);
}
model.VisitEntryId = visitEntryId;
model.VisitTypeId = visitEntry.VisitTypeId;
if (visitEntry.VisitType != null)
model.VisitType = visitEntry.VisitDate.ToShortDateString();
return Json(model);
}
#region Nested Type:VisitDetailModel
public class VisitDetailModel
{
public Guid VisitEntryId { get; set; }
public short VisitTypeId { get; set; }
public string VisitType { get; set; }
public string VisitDate { get; set; }
public string Message { get; set; }
}
#endregion
Isso é o que eu tenho na minha AddToViewModel:
var visits = _visitEntryService.FindAllForCase(viewModel.CaseId, _currentUser.OfficeId).Where(v=>v.VisitDate <= DateTime.Today.SetToMaximumTime()).OrderByDescending(v=>v.VisitDate).ToList();
visits.Insert(0, new VisitEntry());
viewModel.Visits = visits.ToSelectList("VisitEntryId", "Display", viewModel.VisitEntryId.ToString());
if(viewModel.VisitTypes.Count() == 0)
ModelState.AddModelError("",string.Format("No active {0} entered.", Kids.Resources.Entities.VisitType.EntityNamePlural));
O meu .ascx página para mostrar suspensa:
<div class="row">
<%:Html.EditorFor(m=>m.VisitEntryId) %>
<%:Html.LabelFor(m=>m.Visits) %>
<%:Html.ValidationMessageFor(m=>m.VisitEntryId) %>
Meu viewModel:
[LocalizedDisplayName("VisitEntry", NameResourceType = typeof(VisitActivity))]
public short? VisitEntryId { get; set; }
[UIHint("DropDownList")]
[DropDownList(DropDownListTargetProperty = "VisitEntryId")]
public IEnumerable<SelectListItem> Visits { get; set; }
Qualquer informação de porque é que eu não sou capaz de apresentar um dropdownlist seria útil.
Solução
Em seu ascx você está fazendo EditorFor no model.VisitEntryId
o que é um int
Você precisa de um Html.DropDownFor
para uma lista suspensa.
O seu model.Visits
é um SelectList e eu estou supondo que você deve fazer:
<%:Html.LabelFor(m=>m.VisitEntryId) %>
<%:Html.EditorFor(m=>m.Visits) %>
<%:Html.ValidationMessageFor(m=>m.VisitEntryId) %>