Question

J'essaie d'afficher dans une zone de liste déroulante une liste de « visites programmées » basée sur les entrées précédentes.Je suis capable de rassembler les informations, mais lorsque je les affiche, la zone de liste déroulante se transforme en zone de saisie et aucune de mes informations souhaitées n'est affichée.Le format dans lequel je souhaite que mes articles soient affichés est par :10/2/2012 - À l'école.

Voici ce que j'ai pour mon code :

C'est ici que je rassemble les informations de la visite - date et lieu

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

Voici ce que j'ai dans mon 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));

Ma page .ascx pour afficher la liste déroulante :

<div class="row">
<%:Html.EditorFor(m=>m.VisitEntryId) %>
<%:Html.LabelFor(m=>m.Visits) %>
<%:Html.ValidationMessageFor(m=>m.VisitEntryId) %>

Mon modèle de vue :

 [LocalizedDisplayName("VisitEntry", NameResourceType = typeof(VisitActivity))]
    public short? VisitEntryId { get; set; }

    [UIHint("DropDownList")]
    [DropDownList(DropDownListTargetProperty = "VisitEntryId")]
    public IEnumerable<SelectListItem> Visits { get; set; }

Toute information expliquant pourquoi je ne parviens pas à afficher une liste déroulante serait utile.

Était-ce utile?

La solution

Dans votre ascx, vous faites EditorFor sur model.VisitEntryId qui est un int

Tu as besoin d'un Html.DropDownFor pour une liste déroulante.

Ton model.Visits est une SelectList et je suppose que vous devriez faire :

<%:Html.LabelFor(m=>m.VisitEntryId) %>
<%:Html.EditorFor(m=>m.Visits) %>
<%:Html.ValidationMessageFor(m=>m.VisitEntryId) %>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top