Mostrar elementos en el cuadro de lista desplegable
-
12-12-2019 - |
Pregunta
Estoy intentando mostrar en un cuadro de lista desplegable una lista de "visitas programadas" basada en entradas anteriores.Puedo recopilar la información, pero cuando la muestro, el cuadro de lista desplegable se convierte en un cuadro de entrada y no se muestra ninguna de la información que deseo.El formato en el que me gustaría que se mostraran mis artículos es:2/10/2012 - En la escuela.
Esto es lo que tengo para mi código:
Aquí es donde recopilo la información de la visita - fecha y lugar
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
Esto es lo que tengo en mi 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));
Mi página .ascx para mostrar el menú desplegable:
<div class="row">
<%:Html.EditorFor(m=>m.VisitEntryId) %>
<%:Html.LabelFor(m=>m.Visits) %>
<%:Html.ValidationMessageFor(m=>m.VisitEntryId) %>
Mi modelo de vista:
[LocalizedDisplayName("VisitEntry", NameResourceType = typeof(VisitActivity))]
public short? VisitEntryId { get; set; }
[UIHint("DropDownList")]
[DropDownList(DropDownListTargetProperty = "VisitEntryId")]
public IEnumerable<SelectListItem> Visits { get; set; }
Cualquier información sobre por qué no puedo mostrar una lista desplegable sería útil.
Solución
En tu ascx estás haciendo EditorFor en model.VisitEntryId
que es un int
Tu necesitas un Html.DropDownFor
para obtener una lista desplegable.
Su model.Visits
es una SelectList y supongo que deberías hacer:
<%:Html.LabelFor(m=>m.VisitEntryId) %>
<%:Html.EditorFor(m=>m.Visits) %>
<%:Html.ValidationMessageFor(m=>m.VisitEntryId) %>