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.

¿Fue ú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) %>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top